【问题标题】:Splitting a string based on an integer followed by a space根据一个整数后跟一个空格来拆分字符串
【发布时间】:2014-10-22 17:34:52
【问题描述】:

我有一个充满代码和描述的文件。

020304 Head, Floor Space

我需要把它拆分成一个 c# 字典。但是,我只是想将字符串分成两部分,数字和字符。所以,我想要的是:

020304
Head, Floor Space

我无法根据空格或任何其他常见分隔符进行拆分。我无法更改文件以添加特定的分隔符,所以我必须使用我所拥有的。我尝试了几种拆分方法,但无济于事。我可以根据空格对其进行拆分,但我无法找到一种基于 int(digit) 后跟空格的方法来拆分它。

我只能根据 int 后跟空格或 int 后跟空格的位数进行拆分。这是我能想到的唯一方法来拆分这个字符串。

有人对我如何将其拆分为所需格式有任何建议吗?谢谢你

【问题讨论】:

  • 做一个正则表达式,并通过Regex.Split分割
  • 数字总是排在第一位吗?我的意思是在字符串的开头?
  • 是的,数字永远是第一位的

标签: c# string dictionary split integer


【解决方案1】:

有几种方法可以做到这一点。最常见的方法是使用“正则表达式”。

鉴于该数字始终位于开头,您可以使用 String.Split ,它以 count 作为参数。它将限制元素的数量。

string str = "020304 Head, Floor Space";
string[] result = str.Split(new string[]{" "}, 2, StringSplitOptions.None);

结果数组会有

020304
Head, Floor Space

【讨论】:

  • 我不明白。发帖人说他“不能按空格分割”,然后接受了一个按空格分割的答案。
  • @DourHighArch 可能是因为 OP 会尝试不采用 count 参数的 Split 的重载。这意味着他的结果将是 020304、Head,、Floor 和 Space 将被拆分为 4 元素而不是 2 这是 OP 想要的。我的回答解决了这个问题并产生了预期的输出。清楚吗?
【解决方案2】:
string str = "020304 Head, Floor Space";
string[] result = Regex.Split(str, @"[0-9]\s"); //digit(s) followed by whitespace

.

"020304"
"Head, Floor Space"

【讨论】:

  • 只要 OP 一次读取一行就可以使用,否则您也需要在换行符上拆分 (@"\d\s|\n")
  • 这是我的印象,但感谢您的补充。同样适用于接受的答案:) ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 2015-04-14
相关资源
最近更新 更多