2016-02-06 87 views
0

我想在第i個位置做一個字符串數組的分割。與4個或更多的空間正則表達式。字符串分割模式java

我發現了很多的信息在這裏和其他網站,因此我想出了

String[] parts = titlesAuthor[i].split(" "); 

所以分割可以使用一個包含4個或多個空格或不存在作爲標題和作者名字之間發生所有。

實施例:

titleAuthor[0] = Investigational drugs for autonomic dysfunction in Parkinson's disease   Perez-Lloret S 

運行上述分割後,份[0]快到了爲空,並使部分[1]具有完整的字符串。

請幫忙!

代碼:

for (int i = 0; i < nodes.getLength(); i++) { Element element = (Element) nodes.item(i); NodeList title = element.getElementsByTagName("TEXT"); line = (Element) title.item(0); titlesAuthor[i] = getCharacterDataFromElement(line); System.out.println(titlesAuthor[i]); parts = titlesAuthor[i].split(" "); System.out.println(parts[0]); System.out.println(parts[1]); } 
+2

因此,我們應該修復您的代碼而不會看到代碼? – Paul

+0

它與很多註釋掉的東西,我應該發佈一切? –

+1

1.您將String分解爲String [](數組),而不是String數組。 2.你的例子甚至沒有編譯,你需要雙引號圍繞字符串文字。 3。你正好分裂了4個空格,所以如果你有10個空格,那麼你會像這樣分割它:[「在空格之前」,/ *我們'吃'2 * 4個空格* /「 - 」](我用短劃線改變了空格以查看它們) – Gavriel

回答

0

爲了趕上4米或更多的空間,你需要用+來表示它:

String[] parts = titlesAuthor[i].split(" +"); 

或:

String[] parts = titlesAuthor[i].split(" {4,}"); 

更新:它看起來像你的XML看起來不前如你所想。在您提供的代碼中添加:

System.out.println(i + ":" + titlesAuthor[i] + ";"); 

您將在beginnng中看到一些空格或新行。

+0

嘗試過它,它的離開部分[0]爲空並將標題保存在部分[1] –

+0

對不起,但你能解決titleAuthor [0]的問題嗎?我在上面告訴過你,你需要雙引號。 – Gavriel

+0

其中1500條其他記錄中的一行xml文件 –

1

使用正則表達式\s{4}

其實4的空格數,你可以把它改成你想要的任何號碼。

demo

+0

這完全匹配4個空格,如問題 – Gavriel

0

這將跳過空間.. 分裂( 「\ S +」)

+0

中的那個匹配1,2,3空格以及空格,製表符,空格等:) – Gavriel

0

在您的示例中,您的代碼在發現四個連續空格時會分裂。您正在分割的字符串之間有十個連續的空格:

"disease   Perez".

因此,空格之間會出現分隔。假裝「#」是一個空間:

Investigational drugs for autonomic dysfunction in Parkinson's disease|SPLIT|null|SPLIT|##Perez-Lloret S

你的分裂將導致:

{[Investigational drugs for autonomic dysfunction in Parkinson's disease],[null], [##Perez-Lloret S]}

因爲你的代碼中發現的四個空格兩個實例。部分[1]是空的,因爲兩個分組之間沒有任何東西存在。

希望這會有所幫助!

+0

你是對的,這是真的 –

+0

但這並不能解釋爲什麼他沒有得到部分[0] – Gavriel

+0

第一部分句子的第一部分即時獲得6個空格,第二部分標題和第三作者如果存在。 實現的每一行在開始時都有6個空格 –