2011-11-20 93 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为优雅的解决方案。为什么他没有把你的答案标记为正确的...... –