如何获取字符串数组中单词的索引
本文关键字:数组 单词 索引 字符串 何获取 获取 | 更新日期: 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#");
,WordOrigin
是Hello C# World
的,GetWord
是C#
现在根据函数:
string[] words = WordsOrigin.Split(' ');
将字符串文字分解为一个array of strings
,其中单词将针对它们之间的每个spaces
进行拆分。 所以Hello C# World
会被分解为Hello
、C#
和World
。int Index = Array.IndexOf(words, GetWord);
根据我提供的示例获取任何GetWord
的索引,我们正在从Hello C# World
中查找单词C#
,然后将其拆分为Array of String
return Index;
只是返回它所在的任何索引