如何在C#中用空格分割字符串?

时间:2013-03-29 09:35:26

标签: c#

如何通过空格分割它。 (第一行是它的标题)

enter image description here

我在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;
        }
    }
}

2 个答案:

答案 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个位置,但我认为这仍然有用