2011-06-01 54 views
0

我的字符串变量包含一个字符串,每个字符串都在不同的行上。如何找到它中的新行数,然后在特定的字符串行上用,分隔符分隔每个单词?该变量的内容是一样的东西下面如何查找在Java中用“,”分隔的换行符和单词的数量?

null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,[email protected] 
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,[email protected] 
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,[email protected] 

编辑:

我想这

String xmlstr="""null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,[email protected] 
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,[email protected] 
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,[email protected]""" 

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 
+2

有您尝试使用CSV解析器? – 2011-06-01 05:41:31

+0

我不知道csv解析器 – abi1964 2011-06-01 05:54:02

+1

splitted应该是String [](不是String) - 那是您唯一的错误 - 请参阅我的答案以获取更多信息 – Bohemian 2011-06-01 06:09:12

回答

4

要获得新行的数量做

int newLines = myString.split("\\r?\\n").length; 

为了得到用逗号分隔每个单词做

String[] words = myString.split(","); 
0

新行字符是 '\ n'。 所以你应该首先按'\ n'分割。 然后按','分割。

String[] splittedByNewLine = originalString.Split('\n'); 

for(String str : splittedByNewLine) 
{ 
    String[] splittedByComma = str.split(','); 
    for(String str : splittedByComma) 
    { 
     "println str..." 
    }  
} 
+0

对不起,OP将问题标记为'java'。你的代码是用C#编写的。 – 2011-06-01 05:50:12

+0

我转换你的代码在Java中,并使用它,我编辑我的问题,你可以看看。谢谢回答 – abi1964 2011-06-01 05:53:30

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

您也可以使用Groovy的splitEachLine方法。

它的工作原理是这样的:

String xmlstr = """null37,Abhishek,ARS,b,ABC,Development,2011-05-30 00:00:00.0,[email protected] 
null38,Abhishek,SAS,c,ABC,Development,2011-05-30 00:00:00.0,[email protected] 
null39,Abhishek,DGV,a,ABC,Production,2011-05-30 00:00:00.0,[email protected]""" 

xmlstr.splitEachLine(/,/) { tokens -> 
    println "${tokens[1]} : ${tokens[7]}" 
} 

打印出:

Abhishek : [email protected] 
Abhishek : [email protected] 
Abhishek : [email protected] 
+0

有用的信息,谢谢 – abi1964 2011-06-01 08:15:49

相关问题