【问题标题】:String utils split - linux字符串实用程序拆分 - linux
【发布时间】:2018-07-18 10:01:47
【问题描述】:

以下Java代码在Windows机器上工作

filepath = "euro\football\france\winners.txt";
String[] values = StringUtils.split(filePath, "\\");

if (values != null && values.length >= 4) {

} else {
    //error
}

但在执行代码时在 linux 中遇到问题。 if 循环没有执行,else 循环正在执行。

对于 linux,我们需要将拆分指定为“\”还是“/”

String[] values = StringUtils.split(filePath, "\\");

任何建议都会有所帮助

【问题讨论】:

  • linux 路径中的目录由正斜杠分隔,而不是反斜杠。

标签: java string split string-utils


【解决方案1】:

如果文件在运行 JVM 的机器上,那么您可以使用 File.separatorChar 来获取本地机器的系统依赖分隔符。

    String[] values = StringUtils.split(filePath, File.separator);

JavaDoc 说 (File.separatorChar):

系统相关的默认名称分隔符。这个字段是 初始化为包含系统值的第一个字符 属性文件.分隔符。在 UNIX 系统上,该字段的值为 '/';在 Microsoft Windows 系统上,它是 '\'。

【讨论】:

    【解决方案2】:

    为避免这种情况,我将使用简单的正则表达式[/\\],它将与/\ 分开,如下所示:

    String[] filePaths = {
            "euro/football/france/winners.txt",   //linux path
            "euro\\football\\france\\winners.txt" //windows path
    };
    for (String filePath : filePaths) {
        String[] values = filePath.split("[/\\\\]");
        System.out.println(Arrays.toString(values));
    }
    

    输出

    [euro, football, france, winners.txt]
    [euro, football, france, winners.txt]
    

    【讨论】:

    • 感谢您的回复。文件路径是动态的 - 从带有此“\”的标题中获取。 filePath.split("[/\\\]");希望对双方都有效
    • @Jessie 测试时请告诉我
    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 2011-03-03
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多