簡體   English   中英

查找字符串中帶有特定字母的所有單詞

[英]Finding all word with a specific letter in a string

我需要找出如何輸出所有包含 "a"的單詞"a" 我的所有月份都有一個string ,想要將包含 "a"string輸出到console 這是我到目前為止所擁有的

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();
        }
    }
}

那這個呢

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

.Contains() :要獲取所有包含字母a單詞,我們使用了字符串方法。 此擴展方法檢查給定字符串中是否存在作為參數傳遞的子字符串。

Where() :要對字符串數組中的每個元素應用相同的條件,我們使用了Linq擴展方法。

ToLower() :此方法用於使字符串的所有字符都小寫。 因此,它不會錯過“ A”和“ a”。 ToLower()將在結果數組中包含April 如果您不希望April出現在數組中,請不要使用ToLower()

POC: .net小提琴

輸出:

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

不幸的是, Contains 不接受 StringComparison ,但是IndexOf 接受 :我們可以嘗試過濾掉索引"a" 不是負數 (即word出現"a" )的word s

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

    // StringComparison.CurrentCulture if you want case sensitive search
    var result = Månedsdage
      .Where(word => word.IndexOf("a", StringComparison.CurrentCultureIgnoreCase) >= 0);

    Console.Write(string.Join(Environment.NewLine, result));

輸出:

Januar
Februar
Marts
April
Maj
August
Bichat

這是一個不使用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"匹配,請刪除IndexOf中的StringComparison.CurrentCultureIgnoreCase

另外,您可以使用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;
        }           
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM