2011-09-27 99 views
0

我可以使用split()函數以子句作爲分隔符從短語中提取字符串嗎?例如,我有一句「強制性字符串 - 任何字符串1 - 任何字符串2」。我怎樣才能提取物「的任何字符串1」帶分隔符爲「必要的字符串」和「[A-ZA-Z]」在Java中如何從帶有split()函數的短語中提取字符串

這是如何我試圖提取:此代碼的

String str="Mandatory string - Any string1 - Any string2"; 
String[] result= str.split("Mandatory\\string\\s-\\s|\\s-\\s[a-zA-Z]+"); 

結果是

result = ["Mandatory string","ny string1","ny string2"] 

但期望是:

result = ["Any string1"] 

能得到一些幫助,謝謝。

回答

1

String[] result= str.split("Mandatory\\s(1)string\\s-\\s|\\s-\\s[a-zA-Z\\s(2)]+");

你忘記了在位置上的 「S」(1)
和應該有一個 「\\的」 位置(2)

試試這條線:
String[] result= str.split("Mandatory\\sstring\\s-\\s|\\s-\\s[a-zA-Z\\s]+");

+0

這看起來像工作,但仍然一些錯誤。結果是:result = [「」,「Any string1」] – andriy

+0

是的,如果rex匹配String的第一部分,結果數組中的第一個元素將是「」,只需使用result [1]作爲你想要的結果。 – Aloong

+0

'' - 「。split(」「);'會一直是[」「,」 - 「]。 – Aloong

0

如果有一定的格式,以您輸入的字符串,只是拆分,然後使用所需的部分:

String[] resultArray = str.split(" - "); 
String whatYouWant = resultArray[1]; 
+0

好的,我明白了。但如果我不知道數組索引? – andriy

+0

@Andriy那麼你想要的第一個字符串 - 這將是索引1(假設它存在。您可能需要檢查,以確保它存在之前使用它,以避免例外。) – corsiKa

1

首先,有一個錯字就在這裏:

Mandatory\\string 

這也許應該讀

Mandatory\\sstring 

無論如何,我會要麼使用「 - 」作爲分隔符次獲得第二個令牌:

str.split(" - ")[1] // TODO: prod version should do bounds checking etc 

或完全使用不同的工具,可能是一個正則表達式匹配以下正則表達式:

"Mandatory string - (.*) - .*" 

的parenthesised捕獲組會給你你後的字符串。

0

爲什麼不

String[] result = str.split(" - "); 
return result.length < 2 ? "" : result[1]; 
相關問題