【问题标题】:Splitting a string by a space without removing the space?用空格分割字符串而不删除空格?
【发布时间】:2012-01-02 04:58:38
【问题描述】:

类似:How to split String with some separator but without removing that separator in Java?

我需要接受“Hello World”并得到[“Hello”,“”,“World”]

【问题讨论】:

  • 为什么?为什么不能假设每两个元素之间有一个空格?
  • 为什么?您知道分隔符是一个空格,因此对于结果数组的每个元素,相邻元素之间都会有一个空格。如果您使用 string.Join() ,您可以将空间放回原处。我很困惑为什么您在拆分结果中需要它。
  • 如果 hello 和 world 被多个空格分隔,你想要返回什么?

标签: c# string split


【解决方案1】:

您可以为此使用Regex.Split()。如果您将模式括在捕获括号中,它也会包含在结果中:

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

完全满足您的需求。

【讨论】:

    【解决方案2】:

    你可以使用正则表达式,虽然它可能是一个矫枉过正:

    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();
    } 
    

    【讨论】:

      【解决方案3】:

      如果您只在单词边界上进行拆分,您会得到非常接近您所要求的内容。

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

      arr[] = { "", "A", " ", "quick", " ", "brown", " ", "fox", "." }

      【讨论】:

      • 除了string.Split() 不适用于正则表达式。
      • 是的,我在描述的第一行看到了对Java的引用,忽略了C#的标签。
      • 我将示例代码修改为用 C# 编写。数组结果是一样的。
      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 2021-12-29
      • 2014-12-13
      • 2013-08-02
      • 2023-04-02
      • 2013-10-11
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多