如何获取字符串数组中单词的索引

本文关键字:数组 单词 索引 字符串 何获取 获取 | 更新日期: 2023-09-27 18:13:04

我想获取字符串数组中单词的索引。例如,我将输入的句子是"我爱你"。我有词[1]=爱,我怎样才能得到"爱"的位置是1?我可以做到,但只是在 if 状态内。我想把它带到外面。请帮助我。这是我的代码。

 static void Main(string[] args)
    {
        Console.WriteLine("sentence: ");
        string a = Console.ReadLine();
        String[] words = a.Split(' ');
        List<string> verbs = new List<string>();
        verbs.Add("love");
        int i = 0;
        while (i < words.Length) {
            foreach (string verb in verbs) {
                if (words[i] == verb) {
                    int index = i;
                    Console.WriteLine(i);
                }
            } i++;
        }
        Console.ReadKey();
    } 

如何获取字符串数组中单词的索引

我可以做到,但只是在 if 状态内。我想把它带到外面。

您的代码正确识别索引,您现在需要做的就是存储它以供在循环外部使用。

列出int,并针对您确定的匹配项调用Add

var indexes = new List<int>();
while (i < words.Length) {
    foreach (string verb in verbs) {
        if (words[i] == verb) {
            int index = i;
            indexes.Add(i);
            break;
        }
    }
    i++;
}

您可以将内部循环替换为 Contains 方法调用,将外部循环替换为 for

for (var i = 0 ; i != words.Length ; i++) {
    if (verbs.Contains(words[i])) {
        indexes.Add(i);
    }
}

最后,可以将整个序列转换为单个 LINQ 查询:

var indexes = words
    .Select((w,i) => new {w,i})
    .Where(p => verbs.Contains(p.w))
    .Select(p => p.i)
    .ToList();

下面是一个例子

var a = "I love you.";
var words = a.Split(' ');
var index = Array.IndexOf(words,"love");
Console.WriteLine(index);
private int GetWordIndex(string WordOrigin, string GetWord)
{
    string[] words = WordOrigin.Split(' ');
    int Index = Array.IndexOf(words, GetWord);
    return Index;
}

假设你调用了函数GetWordIndex("Hello C# World", "C#");WordOriginHello C# World的,GetWordC#

现在根据函数:

  1. string[] words = WordsOrigin.Split(' ');将字符串文字分解为一个array of strings,其中单词将针对它们之间的每个spaces进行拆分。 所以Hello C# World会被分解为HelloC#World

  2. int Index = Array.IndexOf(words, GetWord);根据我提供的示例获取任何GetWord的索引,我们正在从Hello C# World中查找单词C#,然后将其拆分为Array of String

  3. return Index; 只是返回它所在的任何索引