【问题标题】:how to split the string in java如何在java中拆分字符串
【发布时间】:2011-05-30 08:56:15
【问题描述】:

如何在 Windows 中的 java 中拆分字符串? 我用了 例如。

String directory="C:\home\public\folder";
String [] dir=direct.split("\");

我想知道如何将字符串拆分为例如。 在java中,如果我使用"split("\")",就会出现语法错误。

谢谢

【问题讨论】:

  • 第一行有语法错误,大概意思是:String directory="C:\\home\\public\\folder";

标签: java string split


【解决方案1】:

split() Java 中的函数接受正则表达式。因此,您真正需要做的是将反斜杠字符转义两次:

String[] dir=direct.split("\\\\");

一个用于 Java,一个用于正则表达式。

【讨论】:

  • 这段代码的结果是否必须是这样的数组:[c:][home][public][folder]???
【解决方案2】:

语法错误是因为sing反斜杠在Java中被用作escape character

在正则表达式中,'\' 也是一个转义字符,因此您也需要从它中转义。

最终结果应该是这样的"\\\\"

但是您应该使用java.io.File.separator 作为路径中的分割字符。

String[] dirs = dircect.split(Pattern.quote(File.separator));

感谢约翰

【讨论】:

  • 在 Wndows 上,File.separator
  • 不需要if 声明:dircect.split(Pattern.quote(File.separator)),这是 John 已经建议的,所以不要只是复制(正确的)答案,还要注意删除这个答案,IMO。
  • 虽然我在回答约翰斯的答案不包含该信息,但他没有使用 File.separator。所以这不是抄袭。
  • 好吧,那是你从我和约翰那里抄来的。但适合你自己,把所有重复的信息都留在这里。
  • 我唯一使用的是 Pattern.quote。休息不被复制。告诉我另一个提到分隔符的答案?与其批评人们,不如向他们表明他们做错了,但即使在约翰回答之前,你也没有想过那个 Pattern.quote。我已经在您懒惰的评论之前编辑了答案,但您仍然可以坚持您的理论,即所有内容都被复制并且您在此过程中受到了伤害。我的观点是什么。再见;-)。
【解决方案3】:

你需要转义反斜杠:

direct.split("\\\\");

Java 字符串一次,正则表达式一次。

【讨论】:

    【解决方案4】:

    你需要逃避它。

    String [] dir=direct.split("\\\\");
    

    编辑:或使用Pattern.quote 方法。

     String [] dir=direct.split(Pattern.quote("\\"))
    

    【讨论】:

    • Split 采用正则表达式。此模式不会编译(在运行时)。
    【解决方案5】:

    请不要使用文件分隔符进行拆分。

    强烈建议您获取文件目录并遍历父目录以获取路径。无论您使用什么操作系统,它都可以正常工作。

    试试这个:

    String yourDir = "C:\\home\\public\\folder";
    File f = new File(yourDir); 
    System.out.println(f.getAbsolutePath());
    while ((f = f.getParentFile()) != null) {
        System.out.println(f.getAbsolutePath());
    }
    

    【讨论】:

    • 我花了一点时间才明白第一段的讨论内容。为什么不直接说“请不要使用文件分隔符拆分”,然后继续其他明确的答案..
    【解决方案6】:

    我猜你可以使用 StringTokenizer 库

    String directory="C:\home\public\folder"; 
    String [] dir=direct.split("\");
    StringTokenizer token = new StringTokenizer(directory, '\');
    while(token.hasTokens()
    {
        String s = token.next();
    }
    

    这在语法上可能不完全正确,但希望这会有所帮助。

    【讨论】:

      【解决方案7】:
      final String dir = System.getProperty("user.dir");
      String[] array = dir.split("[\\\\/]",-1) ;
       String arrval="";
      
         for (int i=0 ;i<array.length;i++)
            {
              arrval=arrval+array[i];
      
            }
         System.out.println(arrval);
      

      【讨论】:

        【解决方案8】:

        这是因为反斜杠。反斜杠用于转义字符。使用

        split("\\")
        

        用反斜杠分割。

        【讨论】:

        • Split 采用正则表达式。此模式不会编译(在运行时)。
        • 编译时会抛出一个PatternSyntaxException
        【解决方案9】:
        String[] a1 = "abc bcd"
        String[] seperate = a1.split(" ");
        String finalValue = seperate[0];
        System.out.pritln("Final string is :" + finalValue);
        

        这将给出结果为 abc

        【讨论】:

        • 请在回答前仔细阅读问题。问题是关于反斜杠符号引起的问题,而不是关于如何分割字符串。 ;)
        【解决方案10】:

        split("\\")反冲用来转义。

        【讨论】:

        • 编译时会抛出 PatternSyntaxException。
        猜你喜欢
        • 2011-03-29
        • 2015-03-30
        • 2012-03-21
        • 2013-02-07
        • 1970-01-01
        相关资源
        最近更新 更多