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()如果我想检查两个字符串的顺序结果是否相同,我该怎么做that@MinhNguyen很遗憾,我不明白你想要什么。你能提供一个例子吗?例子1:-字符串A是“HORIDE”=>“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());