我想获取字符串数组中单词的索引。 例如,我要输入的句子是“我爱你。”#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();
}
答案 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#");
,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
的索引,根据我提供的示例,我们正在寻找C#
中的Hello C# World
一词分为Array of String
return Index;
只是从