2011-11-20 92 views
6

喜歡的東西:How to split String with some separator but without removing that separator in Java?按空格拆分字符串而不刪除空格?

我需要的 「Hello World」,並得到[ 「你好」, 「」, 「世界」]

+6

爲什麼?你爲什麼不能假設每兩個元素之間有一個空間? – SLaks

+1

爲什麼?你知道分隔符是一個空格,所以對於結果數組的每個元素,在連續元素之間會有一個空格。如果你使用string.Join(),你可以把空間放回去。我很困惑你爲什麼在分割結果中需要它。 – slugster

+0

如果你好和世界被不止一個空間隔開,你會想要回來什麼? –

回答

1

您可以使用正則表達式,儘管它可能是矯枉過正:

StringCollection resultList = new StringCollection(); 
Regex regexObj = new Regex(@"(?:\b\w+\b|\s)"); 
Match matchResult = regexObj.Match(subjectString); 
while (matchResult.Success) { 
    resultList.Add(matchResult.Value); 
    matchResult = matchResult.NextMatch(); 
} 
1

如果你只是分開邊界,你會得到非常接近你要求的東西。

string[] arr = Regex.Split("A quick brown fox.", "\\b"); 

ARR [] = { 「」, 「A」, 「」, 「快」, 「」, 「褐色」, 「」, 「狐狸」, 「」 }

+1

除了'string.Split()'不適用於正則表達式。 – svick

+0

是的,我在描述的第一行看到了對Java的引用,並忽略了C#的標籤。 – phatfingers

+0

我修改了用C#編寫的示例代碼。數組結果是相同的。 – phatfingers

16

您可以使用Regex.Split()。如果將括號內的圖案括起來,它也將包含在結果中:

Regex.Split("Hello World", "()") 

給你正是你想要的。

+0

+1爲優雅的解決方案。爲什麼他沒有把你的答案標記爲正確的...... –