我的字符串变量包含一个String,每个字符串都在不同的行上。如何在其中找到新行的数量,然后在特定的字符串行上用,
分隔符分隔每个单词?变量内容如下所示
null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,abhishek123@cjb.net
编辑:
我试过这个
String xmlstr="""null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,abhishek123@cjb.net"""
String[] splitStr = xmlstr.split('\n');
for(String str : splitStr)
{
String splitted = str.split(',');
println splitted
}
我得到了一些未知的东西,
[Ljava.lang.String;@148bd3
[Ljava.lang.String;@a4e743
[Ljava.lang.String;@4aeb52
答案 0 :(得分:4)
要获取换行数
int newLines = myString.split("\\r?\\n").length;
用逗号分隔每个单词
String[] words = myString.split(",");
答案 1 :(得分:3)
您也可以使用Groovy的splitEachLine
方法。
它的工作原理如下:
String xmlstr = """null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,abhishek123@cjb.net
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,abhishek123@cjb.net"""
xmlstr.splitEachLine( /,/ ) { tokens ->
println "${tokens[1]} : ${tokens[7]}"
}
打印出来:
Abhishek : abhishek123@cjb.net
Abhishek : abhishek123@cjb.net
Abhishek : abhishek123@cjb.net
答案 2 :(得分:2)
你的错误只是那个
String splitted = str.split(','); // Wrong
应该是数组:
String[] splitted = str.split(','); // Fixed
当Java程序打印数组时,第一个字符是L
,后跟类,然后是对象的内存位置。
这是一些将编译的Java代码,因此您可以看到脚本语言隐藏的问题:
String[] lines = originalString.split("\\r?\\n")); // Do this only once
int numberOfNewLines = lines.length;
int myLine = 5; // Say
String[] words = lines[myLine];
您可以轻松地将这些想法包含在一些干净的代码中。
答案 3 :(得分:0)
新行char是'\ n'。 所以你应该首先用'\ n'分割。 然后用','分开。
String[] splittedByNewLine = originalString.Split('\n');
for(String str : splittedByNewLine )
{
String[] splittedByComma = str.split(',');
for(String str : splittedByComma )
{
"println str..."
}
}