Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用LinQ和Lambda检查字符串中的contain?_C#_Linq_Lambda - Fatal编程技术网

C# 如何使用LinQ和Lambda检查字符串中的contain?

C# 如何使用LinQ和Lambda检查字符串中的contain?,c#,linq,lambda,C#,Linq,Lambda,我有两条线 字符串A是“HORIDE” 字符串B是“TOBRITE” 如何检查我字符串中的元音“A,E,I,O,U”,并按照LinQ和Lambda在字符串中的顺序导出。 例如: 检查后字符串A的结果是“O I E”如果您试图查找单词中的元音,可以通过以下方式执行: Char[] vowels = new Char[] { 'a', 'e', 'i', 'o', 'u' }; string A = "HORIDE"; var VowelsFound = A.Where(x =>

我有两条线


  • 字符串A是“HORIDE”
  • 字符串B是“TOBRITE”

如何检查我字符串中的元音“A,E,I,O,U”,并按照LinQ和Lambda在字符串中的顺序导出。 例如:
检查后字符串A的结果是“O I E”

如果您试图查找单词中的元音,可以通过以下方式执行:

Char[] vowels = new Char[] { 'a', 'e', 'i', 'o', 'u' };

string A = "HORIDE";

var VowelsFound = A.Where(x => vowels.Any(v => Char.ToUpperInvariant(v) == Char.ToUpperInvariant(x))).Distinct();
输出: O

E

其结果是:

PS:如果你想保留首字母大写,用
(c,)=>c替换
(v,v)=>v

编辑

为了比较结果序列,我建议您将上面的代码放入扩展方法中,然后使用方法比较结果:

public static IEnumerable<char> GetVowels(this string value)
{
    var vowels = new[]{'a', 'e', 'i', 'o', 'u'};
    return value.ToCharArray()
        .Join(vowels,
            c => Char.ToUpper(c),
            v => Char.ToUpper(v),
            (_, v) => v);
}

我不明白你的问题。你能澄清一下吗?你的预期结果是什么?如果一个元音在字符串中出现两次,那么@Minh可能会重复?它仍然会输出两次。例如:“trabairan”=>“A”我在使用System.Linq添加
的ToCharArray()之后找不到Join()“OIE”。-字符串B是“TOBRITE”=>“O I E”。=>正确(顺序相同)。示例2:-字符串A是“HANEMO”=>“A E O”。-字符串B是“TENAMO”=>“E A O”。=>错(顺序不同)。谢谢你的帮助
public static IEnumerable<char> GetVowels(this string value)
{
    var vowels = new[]{'a', 'e', 'i', 'o', 'u'};
    return value.ToCharArray()
        .Join(vowels,
            c => Char.ToUpper(c),
            v => Char.ToUpper(v),
            (_, v) => v);
}
var sameVowels = "HORIDE".GetVowels()
        .SequenceEquals("TOBRITE".GetVowels());