我拆分一个字符串基于空白如下:
string myStr = "The quick brown fox jumps over the lazy dog";
char[] whitespace = new char[] { ' ', '\t' };
string[] ssizes = myStr.Split(whitespace);
在我想要这样做的代码中处处定义char[]数组是令人厌烦的。有没有更有效的方法,不需要创建字符数组(如果复制到不同的地方,很容易出错)?
我拆分一个字符串基于空白如下:
string myStr = "The quick brown fox jumps over the lazy dog";
char[] whitespace = new char[] { ' ', '\t' };
string[] ssizes = myStr.Split(whitespace);
在我想要这样做的代码中处处定义char[]数组是令人厌烦的。有没有更有效的方法,不需要创建字符数组(如果复制到不同的地方,很容易出错)?
当前回答
注意,相邻的空格不会被视为单个分隔符,即使使用String.Split(null)也是如此。如果任何标记用多个空格或制表符分隔,则将在数组中返回空字符串。
从文档中可以看到:
分隔符的每个元素定义一个单独的分隔符。如果 两个分隔符相邻,或者在开头找到一个分隔符 或此实例的结束,对应的数组元素包含 空的。
其他回答
你不能内联吗?
var sizes = subject.Split(new char[] { ' ', '\t' });
否则,如果你经常这样做,你总是可以创建一个常量或者包含那个char数组的东西。
正如其他人所注意到的,您也可以根据文档使用null或空数组。当你这样做时,它将自动使用空白字符。
var sizes = subject.Split(null);
注意,相邻的空格不会被视为单个分隔符,即使使用String.Split(null)也是如此。如果任何标记用多个空格或制表符分隔,则将在数组中返回空字符串。
从文档中可以看到:
分隔符的每个元素定义一个单独的分隔符。如果 两个分隔符相邻,或者在开头找到一个分隔符 或此实例的结束,对应的数组元素包含 空的。
为什么不用呢?:
string[] ssizes = myStr.Split(' ', '\t');
你为什么不这样做
var ssizes = myStr.Split(" \t".ToCharArray());
在。net 4.0中似乎有一个String.ToCharArray()方法!
编辑:正如VMAtm指出的,这个方法在。net 2.0中已经存在了!
所以不要复制粘贴!提取一个函数来进行拆分并重用它。
public static string[] SplitWhitespace (string input)
{
char[] whitespace = new char[] { ' ', '\t' };
return input.Split(whitespace);
}
代码重用是你的朋友。