使用空格分割字符串但不删除空格?

6

6
为什么?为什么你不能假设每两个元素之间有一个空格呢? - SLaks
1
为什么呢?你知道分隔符是空格,所以对于结果数组的每个元素,相邻元素之间本来就有一个空格。如果使用string.Join(),你可以把空格放回去。我很困惑为什么你需要在拆分结果中保留它。 - slugster
如果“hello”和“world”之间不止一个空格,你希望得到什么返回值? - Tony Hopkinson
3个回答

16
你可以使用 Regex.Split() 来实现这个功能。如果你将模式放在捕获括号中,它也会被包含在结果中:
Regex.Split("Hello World", "( )")

提供了你想要的准确内容。


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", " ", "quick", " ", "brown", " ", "fox", "." }

arr[] = { "", "A", " ", "快速的", " ", "棕色的", " ", "狐狸", "。" }


1
除了 string.Split() 不能使用正则表达式。 - svick
是的,我看到描述的第一行提到了Java,却忽略了有一个C#的标签。 - phatfingers
我将示例代码修改为C#编写。数组结果相同。 - phatfingers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接