2011-06-01 47 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

相關問題