2014-04-18 66 views
-2

我想分解第一個冒號條目和下一個包含冒號的單詞之間的字符串。該字符串是一個長文本。它可以在冒號之間有逗號或逗號。在下一個冒號前的單詞中拆分字符串?

例如,如果我有以下字符串。

String s  = "Description: This is the description. Observation: This is the description."; 
String[] parts = s.split("REGULAR_EXPRESSION"); 

其結果將是:

This is the description. 

例如,如果字符串是

"Description: This is. The, description. Words: words words" 

其結果將是:

This is. The, description. 
+0

所以你真正想要冒號後捕捉到的東西「 :「,但在下一句之前,是嗎? – NWard

+0

如果你分裂你問,你會得到'Description:這是描述.'。爲什麼然後你期望'這是描述' – Bohemian

+0

是的。 「Description:」一詞總是存在。但是下一個「:」之前的單詞可以是任何單詞。在「描述:」之間,這個詞是我需要的字符串。 – MariaH

回答

1

如果你想你問什麼,你需要一個由冒號和peri分開的正則表達式OD。

這樣的事情?

:.+\. 

編輯:這裏是該正則表達式的擊穿(如由羅馬Ç請求)

:冒號(:)字面上

.+匹配任何字符之一,無限次相匹配,貪婪(除換行符)

\.符合句點字符(.)的字面意思

+1

雖然這看起來像正則表達式可能回答這個問題,但提供關於爲什麼和/或代碼如何回答問題的附加上下文會提高其長期價值。 –

+0

新增說明。 – JAL

0

這拆分了這兩個字符串,它們都是冒號或句點。元素索引1(第二個元素)就是你想要的。只是修剪它。

String description = "Description: This is the description. Observation: This is the description.". 
    split("[\\.:]")[1].trim(); 

你也預修剪:

String description = "Description: This is the description. Observation: This is the description.". 
    split("[\\.:] +")[1]; 

使用"[\\.:]\\s+"如果有可能是非空間空白。

+0

我不爲我工作,因爲字符串「這是描述」可以有「。」。 ...例如,如果字符串是「描述:這是描述。單詞:單詞」。輸出是「This is」而不是「This is。the。description」。 – MariaH

+0

這個信息不在你的問題中,所以我當然不知道。 – aliteralmind

+0

我知道。這就是爲什麼我說「我不爲我工作」。我沒有說這是錯的。 – MariaH

0

斯普利特不是最好的使用方法。這段代碼讓你得到你想要的部分:

String part = string.replaceAll("\\w+:\\s+(.*?)\\s+\\w+:.*", "$1"); 

這也會修剪提取的部分。


一些測試代碼:

String string = "Description: This is the description. Observation: This is the description."; 
String part = string.replaceAll("\\w+:\\s+(.*?)\\s+\\w+:.*", "$1"); 
System.out.println(part); 

輸出:

This is the description. 
0

怎麼樣的未來?:

String string = "Description: This is the description. Observation: This is the description."; 
String str = string.replaceFirst(".*:\\s+(.*)", "$1"); 
相關問題