【问题标题】:Finding all word with a specific letter in a string查找字符串中具有特定字母的所有单词
【发布时间】:2019-05-12 06:05:46
【问题描述】:

我需要了解如何输出所有 包含 "a" 的单词。我有一个 string 和所有月份,并希望将 包含 "a" 的那些输出到 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();
        }
    }
}

【问题讨论】:

标签: c# arrays string find letter


【解决方案1】:

不幸的是,Contains 不接受 StringComparison,但IndexOf 接受:我们可以尝试过滤掉这些words,其中"a"th 索引是不否定(即"a"出现在word中)

    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

【讨论】:

    【解决方案2】:

    这个呢

    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
    

    【讨论】:

    • 如果您添加适当的文档并稍微解释一下答案,那么我将是一个很好的答案,以便未来的读者了解与仅一行代码答案相反的东西
    • 另外Where 不会返回array
    猜你喜欢
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多