Как найти индекс самого короткого слова в строке, используя C #? - PullRequest
0 голосов
/ 27 ноября 2018

Допустим, у меня есть строка и я знаю, какое слово я ищу.Слово конкретно самое короткое.Как мне найти его индекс без прохождения каждого символа?String.IndexOf(), очевидно, не будет работать, поскольку та же последовательность символов может встречаться в более длинном слове.Есть ли способ обойти это?Было бы неплохо узнать, как это сделать и без LINQ.

Например, слово «собака», и я ищу его в «собачности этой собаки.dogy. ".Я бы получил результат как 7, хотя это не 7.

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Так что я решил это сам.Я использовал Regex, очень похожий на тот, что выше.Мой выглядит так:

string pattern = "[^a-zA-Z0-9]+" + myWord + "[^a-zA-Z0-9]";
int index = Regex.Match(someString, pattern).Index;

Спасибо за помощь!

0 голосов
/ 27 ноября 2018

Я бы использовал регулярные выражения, где \b означает «границу слова».Найдите совпадение и верните индекс этого совпадения.

var r = new Regex("\bfoo\b");
var result = r.Match(searchString).Index;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...