拆分字符串并与数组进行比较

时间:2013-09-28 02:09:17

标签: c# arrays string

所以我有以下字符串和数组字符串

示例1

string str = "name1, something2,else , any,thing";
string[] strArray = {"name1" , "something2,else"  , "any,thing"};

示例2

   string str = "A,B,C,D,E,F,G"
   string [] strArray = {"A,B" , "C", "D,E", "F,G","I,J,K","L,M","H,N"}

string[] outputArray = {"A,B" , "C", "D,E", "F,G"}

那么如何将str与strArray进行比较以正确拆分呢?

请注意,strArray不是输出,但它是一个输入数组,有助于理解字符串str的分割。

2 个答案:

答案 0 :(得分:0)

您可以通过正则表达式进行拆分:

string[] strArray = Regex.Split(str, @",(?!\d)");

// Captures "name1", "name2,2" and "name3"

含义:

  

捕获逗号,下一个字符不是数字。

答案 1 :(得分:0)

您可以使用将在空格上拆分的通用拆分,然后您可以使用Trim删除不需要的逗号,如下所示。

static void Main(string[] args)
{
    char[] trimchar = {','};
    string str = "name1, name2,2 ,name3";
    var result = str.Split();
    for (int i = 0; i < result.Length; i++)
    {
        result[i] = result[i].Trim(trimchar);
    }


    string[] strArray = { "name1", "name2,2", "name3" };
}

或者正如Simon建议你可以将逗号和空格的组合拆分成这样的东西。

static void Main(string[] args)
{
    string[] trimChars = { " ,", ", " }; //Note leading and trailing commas
    string str = "name1, name2,2 ,name3,new";
    string[] strArray = { "name1", "name2,2", "name3" };
}

根据OP关于使用strArray检查有效项目的最后评论进行编辑。使用String.Compare并将结果放入List<String>这样做更容易,而不是因为不知道项目数而重新调整数组。

static void Main(string[] args)
{

    string str = "A,B,C,D,E,F,G";
    string[] strArray = { "A,B", "C", "D,E", "F,G", "I,J,K", "L,M", "H,N" };

    List<string> results = new List<string>();
    foreach (var item in strArray)
    {
        if (str.Contains(item))
        {
            results.Add(item);
        }
    }

}