【问题标题】:How to split a java string at backslash如何在反斜杠处拆分java字符串
【发布时间】:2014-05-20 05:25:03
【问题描述】:
String fname="C:\textfiles\db\query\query.txt";

这是我需要拆分的字符串。

我试过了

String [] items=fname.split("\");  

但不工作。

String [] items=fname.split("\\"); also not working...

如何分割这个字符串...

【问题讨论】:

  • 停止。在尝试其他任何操作之前打印出fname。您需要在字符串文字中转义反斜杠
  • 你必须在引号中转义"\",因为它是一个特殊字符。您必须在正则表达式中转义 "\",因为它是一个特殊字符。结果是"\\\\"。在任何情况下,使用 Path 对象,您将获得对 windows 和 Posix 路径样式的支持。

标签: java


【解决方案1】:

首先,您发布的问题中不能有字符串

String fname="C:\textfiles\db\query\query.txt";

这应该被替换为

String fname="C:\\textfiles\\db\\query\\query.txt";

因为反斜杠(“\”)也需要转义。

最后你需要做这样的事情来拆分它们:

 String fname="C:\\textfiles\\db\\query\\query.txt";
 String[] items= fname.split("\\\\");
 System.out.println(Arrays.toString(items));

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    'split' 需要正则表达式。 使用拆分的最佳方式是使用“Pattern.quote”

    String separator = "\\";
    String value = "C:\\Main\\text.txt";
    String[] arrValues = value.split(Pattern.quote(separator));
    

    【讨论】:

      【解决方案3】:

      它有效。

      String fname="C:\\textfiles\\db\\query\\query.txt";
             String split[]  = fname.split("\\\\");
             System.out.println(" :: value " + split[0] );
      

      【讨论】:

      • org.apache.commons.lang3.StringUtils.split(fname, "\\") 完成这项工作
      【解决方案4】:

      请使用以下代码...

      fname.split(Pattern.quote(File.separator));
      

      【讨论】:

      • 在 Windows 中工作而不在 Linux 中工作。需要使用“\\”才能与两个操作系统一起使用
      【解决方案5】:

      首先您需要将所有出现的“\”替换为“\\”,然后使用“\\”进行拆分。

      String str="C:\Users\prajwal_nayak\Documents\queries.sql";
      String separator = "\\";
      String[] str_arr=str.replaceAll(Pattern.quote(separator), "\\\\").split("\\\\");
      

      【讨论】:

        【解决方案6】:
        public static String[] splitPath (String path) {
            String backslash = ((char)92) + "";
            if (path.contains(backslash)) {
                ArrayList<String> parts = new ArrayList<>();
                int start = 0;
                int end = 0;
                for ( int c : path.toCharArray() ) {
                    if (c == 92) {
                        parts.add(path.substring(start, end));
                        start = end + 1;
                    }
                    end++;
                }
                parts.add(path.substring(start));
                return parts.toArray( new String[parts.size()] );
            }
            return path.split("/");
        }
        

        【讨论】:

        • 一种有趣的方法来解决这里没有提到的问题。
        • 我想作者问为什么他对 String.Split 函数的使用不适用于拆分算法实现。
        • 这绝对是解决上述问题(“如何拆分这个字符串...”)。那些说你不能有带反斜杠的字符串的答案是错误的。我的示例甚至展示了如何创建带有反斜杠的字符串。我在android上遇到了这个问题,这是为我解决分裂问题的快速解决方案。对于这些情况,内置的 string.split() 函数将以一种奇怪的方式失败(内部正则表达式异常)
        【解决方案7】:
        **//single slash already used as space in java 
        // suppose it would be Object Type obj="C:\textfiles\db\query\query.txt";**
        
        public static void main(String[] args) {
        String target="\\";
        String replacement="\\\\";
        String str=(String) obj;
        str=str.replace(target, replacement);
        String[] strarray=str.split(replacement);
        String filename=strarray[8];
        System.out.println("file Name: "+filename);
        }
        

        【讨论】:

          【解决方案8】:

          请使用以下代码...

          String str[]=fname.split("\\\\\\\");
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-10-23
            • 1970-01-01
            • 2022-12-19
            • 1970-01-01
            • 2014-09-04
            • 1970-01-01
            • 2020-12-25
            相关资源
            最近更新 更多