【发布时间】: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替换为""