String.Split仅在C#中的第一个分隔符?
String.Split方便的用分隔符分割多个部分的string。
我应该如何去分割只在第一个分隔符string。 例如我有一个string
"Time: 10:12:12\r\n"
我想要一个数组看起来像
{"Time","10:12:12\r\n"}
最好的方法取决于你想要parsing的灵活性,关于可能的额外空间等等。 检查确切的格式规格,看看你需要什么。
yourString.Split(new char[] { ':' }, 2)
会限制你两个子串。 但是,这不会减less第二个string开头的空格。 但是,你可以在分裂后的第二个操作中做到这一点。
yourString.Split(new char[] { ':', ' ' }, 2, StringSplitOptions.RemoveEmptyEntries)
应该可以工作,但是如果你试图拆分一个包含空格的头部名称就会中断。
yourString.Split(new string[] { ": " }, 2, StringSplitOptions.None);
会做你所描述的,但实际上需要的空间是存在的。
yourString.Split(new string[] { ": ", ":" }, 2, StringSplitOptions.None);
使空间可选,但在多个空间的情况下仍需要TrimStart()
。
为了保持格式的灵活性和可读性,我build议使用第一个选项:
string[] split = yourString.Split(new char[] { ':' }, 2); // Optionally check split.Length here split[1] = split[1].TrimStart();
在上面的例子中,你可以在“:”(即冒号尾随空格)上分割,因为这看起来就是你所做的。 如果你真的在第一个分隔符上进行分割,你会在第二个数组元素中看到前导空格。
不过,你应该看看这个重载的Split …
http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx
public string[] Split( char[] separator, int count )
…允许您指定最大数量的子string。
?("Time: 10:12:12\r\n").Split(new char[] { ':', ' ' }, 2, StringSplitOptions.RemoveEmptyEntries) {Dimensions:[2]} [0]: "Time" [1]: "10:12:12\r\n"
其他选项:
?("Time: 10:12:12\r\n").Split(new char[] { ':' }, 2) {Dimensions:[2]} [0]: "Time" [1]: " 10:12:12\r\n" ?("Time: 10:12:12\r\n").Split(new char[] { ':' }, 1) {Dimensions:[1]} [0]: "Time: 10:12:12\r\n" ?("Time: 10:12:12\r\n").Split(new char[] { ':' }, 3) {Dimensions:[3]} [0]: "Time" [1]: " 10" [2]: "12:12\r\n"
我已经采纳了Thorarin上面的答案的变体,下面应该能够处理您的要求,再加上修剪空间。
yourString.Split(new []{'-'},2).Select(s => s.Trim())
- 为什么使用C#类System.Random而不是System.Security.Cryptography.RandomNumberGenerator?
- Exception.Message vs Exception.ToString()
- System.IO.FileSystemWatcher监视networking服务器文件夹 – 性能注意事项
- 任务sorting和re-entracy
- 如何捕捉.NET应用程序中的所有exception/崩溃
- TransactionScope和multithreading
- 使用Json.net将json对象反序列化为dynamic对象
- Visual Studio跳转到下一个错误快捷方式?
- C#应用程序中的全局键盘捕获