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

本文关键字:比较 数组 字符 字符串 串并 拆分 | 更新日期: 2023-09-27 18:33:03

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

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

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

您可以使用通用的 Split,它将在空格上拆分,然后您可以使用 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 并将结果放入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);
        }
    }
}

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

string[] strArray = Regex.Split(str, @",(?!'d)");
// Captures "name1", "name2,2" and "name3"

意义:

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