【问题标题】:Java program to remove new line character from the lineJava程序从行中删除换行符
【发布时间】:2018-12-24 08:18:19
【问题描述】:

我无法删除行中出现的换行符。

我的意见是:

1,john,a

2,smith,b

3,mike

,c

4,clark,d

我的输出应该是:

1,john,a

2,smith,b

3,mike,c

4,clark,d

以下是我目前编写的代码。我正在使用“继续”根据每行中预期的“,”计数来删除不良记录。但是,我想将错误存在“\n”的行与下一行连接起来以获取该行而不是作为坏记录删除。

String test="1,john,a\n2,smith,b\n3,mike\n,c\n4,clark,d";

String[] test2=test.split("\n");

int count=0;
String s="";
for(int i=0;i<=test2.length-1;i++)
{
    for(int j=0;j<test2[i].length();j++) {
        char c= test2[i].charAt(j);
        if(c==',') {
           count++;
           if(count<2) {
              continue;
           }
           System.out.println(test2[i]);
        }
    }
    count=0;    
}

【问题讨论】:

  • 您的输入是否保证每行恰好包含三个(所需)元素?
  • @markspace 是的,一行应该总是有 3 个元素
  • split() 不会删除换行符吗?
  • 仅供参考:任何在事实发生后对格式不佳的数据进行清理的尝试都可能会失败。如果您的输入允许换行符,您真的确定它不允许逗号吗?你怎么知道“3,mike\n,c\n4,clark,d”是指[[3,"mike","c"],[4,"clark","d"]]而不是[[3,"mike\n,c,4,clark","d"]]?如果可能的话,最好的解决方案是首先更改这些值的编码方式。
  • 使用正则表达式将任何出现的\n,,\n 替换为""

标签: java arrays newline


【解决方案1】:

如果您总是每行只有三个元素,请尝试同时拆分 \n,,然后将三个元素合并为一行。

String test="1,john,a\n2,smith,b\n3,mike\n,c\n4,clark,d";

String[] test2=test.split("[\n,]+");

for(int i=0;i<test2.length;i+=3)
{
   System.out.println(test2[i]+","+test2[i+1]+","+test2[i+2]);
}

【讨论】:

  • 你能在字符串上调用 text2.split() 吗?如果不指定马车,这不会在每个换行符上中断吗?只是想知道,我这台机器上没有JDK,也有一段时间没用过Java了。
  • 我认为这行不通,因为test.split("[\n,]"); 会在“mike”和“c”之间产生一个空字符串。见docs.oracle.com/javase/8/docs/api/java/lang/…
  • @markspace 感谢您的回复。但是,此代码没有返回预期的输出
  • @StriplingWarrior 我在括号后添加了+,现在对我有用。很抱歉发布未经测试的代码。
  • @mohammedahmed 我在正则表达式中添加了+,现在就试试吧。
【解决方案2】:
String test="1,john,a\n2,smith,b\n3,mike\n,c\n4,clark,d";

String[] test2=test.split("\n");

int count=0;
String s="";
for(int i=0;i<=test2.length-1;i++)
{
   String[] temp=test2[i].split(",");
   if(temp.length!=3){
     s=s+test2[i]+test2[i+1]+"\n";
     i++;
   }
else{
    s=s+temp[0]+","+temp[1]+","+temp[2]+"\n";
   }
}
 System.out.println(s);

【讨论】:

    【解决方案3】:

    我试过了:

    字符串 s="a,b,c\n";

    while(s != null){ <<<<<-------Use the while condition as per your use case
    
        String[] var = s.split("\n");
    
        System.out.println(var[0]);
    }
    

    它显示了所需的结果。您可以类似地拆分文件的所有行并获得所需的输出。

    输出:a,b,c

    确保像 buffer.readLine() 一样正确地迭代循环

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2019-03-29
      • 2019-09-15
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多