String.Split仅在C#中的第一个分隔符上?

Ano*_*nym 77 .net c# string

String.Split便于在分隔符上拆分多个部分的字符串.

我该如何继续仅在第一个分隔符上拆分字符串.我有一个字符串

"Time: 10:12:12\r\n"
Run Code Online (Sandbox Code Playgroud)

我想要一个看起来像的阵列

{"Time","10:12:12\r\n"}
Run Code Online (Sandbox Code Playgroud)

Tho*_*rin 139

最好的方法取决于您希望解析的灵活性,关于可能的额外空间等.检查确切的格式规范以了解您的需求.

yourString.Split(new char[] { ':' }, 2)
Run Code Online (Sandbox Code Playgroud)

将限制你两个2个子串.但是,这不会修剪第二个字符串开头的空格.但是,您可以在拆分后的第二个操作中执行此操作.

yourString.Split(new char[] { ':', ' ' }, 2,
    StringSplitOptions.RemoveEmptyEntries)
Run Code Online (Sandbox Code Playgroud)

应该可以工作,但是如果您尝试拆分包含空格的标题名称,则会中断.

yourString.Split(new string[] { ": " }, 2,
    StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

将完全按照您的描述进行,但实际上需要存在空间.

yourString.Split(new string[] { ": ", ":" }, 2,
    StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

使空间可选,但如果有TrimStart()多个空格,您仍需要.

为了保持格式有些灵活,并且您的代码可读,我建议使用第一个选项:

string[] split = yourString.Split(new char[] { ':' }, 2);
// Optionally check split.Length here
split[1] = split[1].TrimStart();
Run Code Online (Sandbox Code Playgroud)

  • 我发现像yourString.Split(':',2)这样的东西很混乱; 不起作用...谢谢你的解释! (2认同)

Mar*_*eck 13

在上面的示例中,您可以拆分":"(即带有尾随空格的冒号),因为这似乎就是您所做的.如果你真的只拆分第一个分隔符,你会在第二个数组元素中看到一个前导空格.

但是,您应该看看Split的这个重载...

http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx

public string[] Split(
  char[] separator,
  int count
)
Run Code Online (Sandbox Code Playgroud)

...允许您指定最大数量的子串.