首页 > 解决方案 > 在 if 语句中检查以“ugle”开头的字符串后,如何将其保存在新数组中?

问题描述

我试图在字符串'words'中保存以“ugle”开头的字符串,但这让我很恼火。

有没有人可以解决我的问题?

string sentence = "Uglen er en rovfugl. Ikke alle rovfugle er ugler. En ugle spiser mus og gylper uglegylp. Alle ugler er gode ugler. " +
                    "De fleste har været små ugleunger med en uglemor og en uglefar. Er ugler uglede i håret? Hvor mange ugler kan bo i en uglerede?";

sentence = sentence.ToLower();
int ugleCount = 0;
Char[] myChars = { ' ', '.', ',', '?' };
string[] words = sentence.Split(myChars);
        
foreach (string x in words)
{
    if (x.StartsWith("ugle"))
    {
        ugleCount++;

    }
}

标签: c#arrays

解决方案


你只是错过了结果。

    string sentence = "Uglen er en rovfugl. Ikke alle rovfugle er ugler. En ugle spiser mus og gylper uglegylp. Alle ugler er gode ugler. " +
                        "De fleste har været små ugleunger med en uglemor og en uglefar. Er ugler uglede i håret? Hvor mange ugler kan bo i en uglerede?";
    
    sentence = sentence.ToLower();
    Char[] myChars = { ' ', '.', ',', '?' };
    string[] words = sentence.Split(myChars);
    List<string> result = new List<string>();        
    foreach (string word in words)
    {
        if (word.StartsWith("ugle"))
        {
            list.Add(word);
        }
    }

我建议你使用word而不是x为了可读性。

您也可以仅使用 Linq 解决此问题。

    using System.Linq

    string sentence = "Uglen er en rovfugl. Ikke alle rovfugle er ugler. En ugle spiser mus og gylper uglegylp. Alle ugler er gode ugler. " +
                        "De fleste har været små ugleunger med en uglemor og en uglefar. Er ugler uglede i håret? Hvor mange ugler kan bo i en uglerede?";
    
    sentence = sentence.ToLower();
    Char[] myChars = { ' ', '.', ',', '?' };
    string[] words = sentence.Split(myChars);

    List<string> result =  words.Where(word => word.StartsWith("ugle")).ToList();  

在这两种情况下,您都不需要ugleCount.

如果您需要强制继续使用words[]结果,只需将第二个示例更改为:

words = words.Where(word => word.StartsWith("ugle")).ToArray();


   

推荐阅读