【问题标题】:Removing carriage return while splitting a string using split function使用 split 函数拆分字符串时删除回车
【发布时间】:2013-10-28 05:25:02
【问题描述】:

我有一个类似的字符串

String str="second,b,c,d,e,c"

当我在 regex="," 上拆分此字符串时

String[] array=str.split(,);

我应该得到

array[5]="c".

但我得到的是

array[5]="c+carriage return".

这个回车怎么去掉?

我正在从扫描仪获取字符串。 代码如下:

File file=new File(path2);
        Scanner inputstream=new Scanner(file);
        inputstream.useDelimiter("\n");
        while(inputstream.hasNext()){
            String data=inputstream.next();
            String[] val=data.split(",");
            String sql4="insert into "+name+"(question,option1,option2,option3,option4,answer) values('"+val[0]+"','"+val[1]+"','"+val[2]+"','"+val[3]+"','"+val[4]+"','"+val[5]+"')";
            s.execute(sql4);
        }

文件内容为 .csv 格式的 second,b,c,d,e,c

【问题讨论】:

  • 您的 String 好像闹鬼了。你应该雇一个驱魔人。
  • @MaximShoustin 我已经发布了文件内容
  • @MaximShoustin 我用文件内容编辑了问题

标签: java string csv split


【解决方案1】:

您可以在拆分之前在字符串上使用String#trim()

String[] arr = line.trim().split(",");

【讨论】:

    【解决方案2】:
    List<String> lines =                          // just quick way to read file
                Files.readAllLines(
                    Paths.get("C:\\Automation1\\Example.csv"),
                    StandardCharsets.UTF_8);
    
        lines.removeAll(Arrays.asList("", null)); // <- remove empty lines
        String[] array=lines.get(0).trim().split(",");
    
        System.out.println(array[5]);
    

    输出:

    c
    

    【讨论】:

    • 对不起,我已经编辑了问题。此变量仅用作示例。
    • 请发布文件内容
    • 如果你有空行,我添加删除空行,所以它只会处理数据
    【解决方案3】:

    这样试试

    String str="second,b,c,d,e,c";
    str = str.replaceAll("[\n\r]", "");
    String[] array=str.split(",");
    
    for(int i=0;i<array.length;i++)
         System.out.println(array[i]);
    

    【讨论】:

    • 第二行会做什么??
    • 将用空字符串替换回车和mew行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多