Bootstrap

C#字符串操作:判断一个字符串是否存在于另一个字符串按特定字符分割后的子字符串中的几种方法

要判断一个字符串是否存在于另一个字符串按特定字符分割后的子字符串中,可以使用以下几种方法:

方法一:使用Split和Array.Exists

你可以使用 Split 方法将字符串分割成子字符串数组,然后使用 Exists方法检查目标字符串是否在数组中:

using System;

class Program
{
    static void Main()
    {
        string input = "CCTA|CoroCTA|CoronaryCTA";
        string target = "CoroCTA";

        string[] substrings = input.Split('|');

        if (Array.Exists(substrings, s => s == target))
        {
            Console.WriteLine($"字符串 '{target}' 存在于分割后的子字符串中");
        }
        else
        {
            Console.WriteLine($"字符串 '{target}' 不存在于分割后的子字符串中");
        }
    }
}

在这个方法中,我们使用 Array.Exists 方法来检查目标字符串是否在分割后的子字符串数组中。

代码解释如下:

  • 首先,定义了输入字符串 input 为 "CCTA|CoroCTA|CoronaryCTA",以及要搜索的目标字符串 target 为 "CoroCTA"
  • 然后,使用 Split('|') 方法按照管道符将 input 字符串分割成一个字符串数组 substrings
  • 接着,使用 Array.Exists 方法,传入 substrings 和一个 lambda 表达式 s => s == target,该表达式会为数组中的每个元素 s 检查是否与 target 相等。
  • 如果存在匹配项,即 target 在分割后的子字符串中,程序输出 "字符串 'CoroCTA' 存在于分割后的子字符串中";否则,输出 "字符串 'CoroCTA' 不存在于分割后的子字符串中"

方法二:使用 Contains 和 Split

你也可以使用 LINQ 来简化这个过程:

using System;

class Program
{
    static void Main()
    {
        string input = "CCTA|CoroCTA|CoronaryCTA";
        string target = "CoroCTA";

        string[] substrings = input.Split('|');

        if (substrings.Contains(target))
        {
            Console.WriteLine($"字符串 '{target}' 存在于分割后的子字符串中");
        }
        else
        {
            Console.WriteLine($"字符串 '{target}' 不存在于分割后的子字符串中");
        }
    }
}

在这个方法中,我们使用 Contains 方法来检查目标字符串是否在分割后的子字符串数组中。

方法三:使用 HashSet

如果你需要多次检查不同的目标字符串是否存在于分割后的子字符串中,可以使用 HashSet 来提高性能:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        string input = "CCTA|CoroCTA|CoronaryCTA";
        string target = "CoroCTA";

        string[] substrings = input.Split('|');
        HashSet<string> substringSet = new HashSet<string>(substrings);

        if (substringSet.Contains(target))
        {
            Console.WriteLine($"字符串 '{target}' 存在于分割后的子字符串中");
        }
        else
        {
            Console.WriteLine($"字符串 '{target}' 不存在于分割后的子字符串中");
        }
    }
}

在这个方法中,我们首先将分割后的子字符串数组转换为 HashSet,然后使用 Contains 方法来检查目标字符串是否在集合中。HashSet 提供了更快的查找速度,特别是在数据量较大时。 

方法四:使用 LINQ(实际上与方法一相似,但强调LINQ的写法)

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        string input = "CCTA|CoroCTA|CoronaryCTA";
        string target = "CoroCTA";

        bool exists = input.Split('|').Any(s => s == target);

        if (exists)
        {
            Console.WriteLine($"字符串 '{target}' 存在于分割后的子字符串中");
        }
        else
        {
            Console.WriteLine($"字符串 '{target}' 不存在于分割后的子字符串中");
        }
    }
}

这里用 LINQ 的 Any 方法替代了直接的 Contains 调用,逻辑上与方法一相同,但提供了更灵活的查询能力,适合需要进行复杂条件筛选的情况。

这些方法都可以有效地判断一个字符串是否存在于另一个字符串按特定字符分割后的子字符串中。选择哪种方法取决于你的具体需求和个人偏好。

;