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

时间:2016-10-14 01:09:09

标签: c#

我想获取字符串数组中单词的索引。 例如,我要输入的句子是“我爱你。”#39; 我有言语[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();
    } 

3 个答案:

答案 0 :(得分:1)

  

我能做到但只是在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();

答案 1 :(得分:0)

这是一个例子

var a = "I love you.";
var words = a.Split(' ');
var index = Array.IndexOf(words,"love");
Console.WriteLine(index);

答案 2 :(得分:0)

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# WorldGetWordC#

现在根据功能:

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

  2. int Index = Array.IndexOf(words, GetWord);获取GetWord的索引,根据我提供的示例,我们正在寻找C#中的Hello C# World一词分为Array of String

  3. return Index;只是从

  4. 返回它所在的索引