我想找到我的程序发现的字符串中最长的单词的索引/或位置

I want to find the index/ or position of the word that my program found to be the longest in the string

这是我的代码,我正在接受用户的输入,我想找出用户输入的字符串中最长单词的索引/或位置。我似乎无法弄清楚这一点! 无论我在哪里寻求帮助,我都会得到 indexOf() 方法,在该方法中,您必须手动键入要查找索引的单词。

这是我的代码:

using System;
using System.Linq;

public class Question1
{
public static void Main(string[] args)
{
   
    Console.WriteLine("Enter String:");
    string line = Console.ReadLine();
    string[] words = line.Split(new[] { " " }, StringSplitOptions.None);
    string word = "";
    int ctr = 0 , len, max = 0;
    
    foreach (String s in words)
    {
        if (s.Length > ctr)
        {
            word = s;
            ctr = s.Length;
           

        }

    }
    Console.WriteLine("Longest String : " + word);
    Console.WriteLine("Length : " + ctr);

}
 }

要从句子中找到最长的单词索引,您必须使用 Array class 中的 .indexOf() 方法。

而不是

Console.WriteLine(word.IndexOf(word, ctr));

试试,

int longestWordIndex = Array.IndexOf(words, word);
Console.WriteLine($"Index of Longest word = {longestWordIndex}");

您可以这样找到您找到的单词的索引:

int indexOfWord = line.IndexOf(word, StringComparison.CurrentCulture);

所以如果这个词是第一个词,indexOfWord将为0。如果是“Hello William”中的“William”,那么它将是6,依此类推

Try it online

标点符号和其他字符的验证:

const string sentence = "Find the position of the longest word in this sentence";

var longestWord =
   sentence
      .Split(' ')
      .OrderByDescending(w => w.Length)
      .First();

var position = sentence.IndexOf(longestWord, StringComparison.InvariantCulture);

一般情况下,我们应该得出结论:单词是什么。如果我们同意

Word is a non-empty sequence of letters and apostrophes

我们可以在正则表达式的帮助下匹配单词,然后查询匹配到在 Linq 的帮助下获得最长的一个。 请注意,在一般情况下(带标点符号)Split 是不够的。

代码:

using System.Linq;
using System.Text.RegularExpressions;

...

string line = 
  "This is the sentence; it has some punctuations! ---note-it's-not-the-longest--";

var result = Regex
  .Matches(line, @"[\p{L}']+")
  .Cast<Match>()
  .MaxBy(match => match.Value.Length);

Console.Write(
  $"Word is \"{result.Value}\" at postion {result.Index} (length {result.Length})"
);

结果:

Word is "punctuations" at postion 34 (length 12)