-1

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

示例 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 的拆分。

4

2 回答 2

0

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

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

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

意义:

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

于 2013-09-28T02:15:03.783 回答
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" };
}

或者正如西蒙建议的那样,您可以像这样使用逗号和空格的组合拆分。

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 并将结果放入 aList<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);
        }
    }

}
于 2013-09-28T02:22:39.943 回答