查找字符串中带有特定字母的所有单词

时间:2018-12-11 09:22:06

标签: c# arrays string find letter

我需要找出如何输出包含 "a"的所有单词。我有一个string和所有月份,并想将包含 "a"的月份输出到控制台。 这是我到目前为止所拥有的

string[] Månedsdage = { 
  "Januar", "Februar", "Marts", 
  "April", "Maj", "Juni", 
  "juli", "August", "September", 
  "Oktober", "November", "December", 
  "Bichat" };

for (int i = 0; i < Månedsdage.Length; i++)
{
    for (int j = 0; j < Månedsdage[i].Length; j++)
    {
        if (Månedsdage[i].Substring(j,1) == "a")
        {
            Console.WriteLine("Alle måneder med A: ");
            Console.WriteLine(Månedsdage[j]);
            Console.ReadLine();
        }
    }
}

3 个答案:

答案 0 :(得分:6)

string[] result = Månedsdage.Where(x=> x.ToLower().Contains('a')).ToArray();

.Contains():要获取所有包含字母a的单词,我们使用了字符串方法。此扩展方法检查给定字符串中是否存在作为参数传递的子字符串。

Where():为了对字符串数组中的每个元素应用相同的条件,我们使用了Linq扩展方法。

ToLower():此方法用于将字符串的所有字符转换为小写。因此,它不会错过“ A”和“ a”。 ToLower()将在结果数组中包含April。如果您不希望April进入数组,请不要使用ToLower()

POC:.net Fiddle

输出:

Januar
Februar
Marts
April  /*ToLower() ;)*/
Maj
August
Bichat

答案 1 :(得分:1)

很遗憾,For each xWorksheet in ActiveWorkbooks.Worksheets lastrow = xWorksheet.Cells(Rows.Count, 1).End(xlUp).row Range("A" & lastrow + 3).Select xWorksheet.Pictures.Insert("filepath\file name.jpg").Select Next xWorksheet 不接受 Contains,但是StringComparison可以:我们可以尝试过滤掉{{1} 1}}个索引不是不是负数(即IndexOf出现在word中)

"a"

输出:

"a"

答案 2 :(得分:0)

这是一个不使用Linq的示例。

您只需要使用一个循环和IndexOf即可实现所需的功能:

string[] Månedsdage = { 
  "Januar", "Februar", "Marts", 
  "April", "Maj", "Juni", 
  "juli", "August", "September", 
  "Oktober", "November", "December", 
  "Bichat" };

for (int i = 0; i < Månedsdage.Length; i++)
{
        // if IndexOf("a") >= 0 then there is a match 
        if (Månedsdage[i].IndexOf("a", StringComparison.CurrentCultureIgnoreCase) > -1)
        {
            Console.WriteLine("Alle måneder med A: ");
            Console.WriteLine(Månedsdage[i]);
        }

}

如果您不希望"A"匹配,请删除StringComparison.CurrentCultureIgnoreCase中的IndexOf

或者,您可以使用ToCharArray()并使用2个循环:

foreach (string word in Månedsdage)
{           
    foreach(char c in word.ToCharArray())
    {
        if (c == 'a' || c == 'A')
        {
            Console.WriteLine("Alle måneder med A: ");
            Console.WriteLine(word);

            // a match has been found, break out of the inner loop and move onto next word
            break;
        }           
    }
}