如何通过空格分割它。 (第一行是它的标题)
我在cbay.ABS = columnsC [5]尝试此代码但错误“index out of range”,因为第二行只返回4而不是第1行中的6个元素。我希望第二行也返回6个元素。
using (StringReader strrdr = new StringReader(strData))
{
string str;
while ((str = strrdr.ReadLine()) != null)
{
// str = str.Trim();
if ((Regex.IsMatch(str.Substring(0, 1), @"J")) || (Regex.IsMatch(str.Substring(0, 1), @"C")))
{
columnsC = Regex.Split(str, " +");
cbay.AC = columnsC[1];
cbay.AU = columnsC[2];
cbay.SA = columnsC[3];
cbay.ABS = columnsC[5];
// cbay.ABS = str;
}
}
}
答案 0 :(得分:2)
为了只获得没有多余witespace的单词,你可以传递StringSplitOptions.RemoveEmptyEntries
作为Split
的{{1}}方法的第二个参数,如果将删除所有多余的“空格”,因为它将在每个空格上分开。而不是使用正则表达式检查这个简单的例子:
string
编辑在您的特定情况下,如果您使用此字符串,其中部分用多个空格(至少三个)分隔,它将起作用。检查示例:
string inputString = "Some string with words separated with multiple blanck characters";
string[] words = inputString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
string resultString = String.Join(" ", words); //joins the words without multiple whitespaces, this is for test only.
EDIT2 :这是解决您问题的最简单,最笨拙的解决方案,但我认为它会有效:
string inputString = "J 16 16 13 3 3";
string[] words = inputString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
答案 1 :(得分:0)
您可以先用零替换多个空格,然后在剩余的单个空格上替换;
var test = "test 1 2 3";
var items = test.Replace(" ", "0").Split(' ');
如果有很多空格,你可能会得到一些00个位置,但我认为这仍然有用