Подстрока, заменить, найти следующее слово и т. Д. В C # - PullRequest
0 голосов
/ 05 апреля 2011

Это кажется сложным, и я наткнулся на последнее препятствие.Я пробовал разные логики, но шум вполне работает.Поэтому я не предоставляю свой код.Но я выложу, какой вывод мне нужен.Это логика, я думаю, хотя я уверен, что мне действительно нужно знать методы больше, чем .Substring() и .Replace().

Ввод - это строка.и вывод является измененной формой входной строки.Вот что я хочу.

input: "happy" output: "happy"

input: "он обманщик" вывод: "он обманщик"

input: "он обманул меня" вывод: "он обманул меня"

вход: "это мой попугай" вывод: "это мой пап ... rrot"

Иногда в моей программе несколько отдельных слов в строке могут быть разделены пробелом (попугай, обманутый в приведенных выше примерах).То, что я хочу сделать, это:

      .Replace("a ", "a...");

Всякий раз, когда в словах, разделенных пробелом (попугай, обманутый) есть «а», я хочу, чтобы три точки следовали за «а».Я могу это сделать.Что составляет мою проблему, «а» также является распространенным словом в английском языке для обозначения «один» (манго, яблоко и т. Д.).Я не хочу, чтобы программа добавляла три точки после таких "а".Пример ниже.

input: "mango is a fruit" output: "m a ... ngo is fruit"

Как это можно сделать?Любая логика будет делать, если она дает вывод, как я желаю.Я надеюсь, что смогу прояснить свое требование.Если я что-то пропущу, пожалуйста, спросите.Спасибо

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Это будет работать в случаях, которые вы упомянули ...

string input = "once a c h e a t e r always a cheater";
string output = Regex.Replace(input, @"(?<=\b\w )a (?=\w\b)", "a...");
Console.WriteLine(output); // once a c h e a...t e r always a cheater

Проверяет, что окружающие "слова" являются одной буквой.

0 голосов
/ 05 апреля 2011

Я не уверен, но вы можете попробовать найти подстроку 'a', извлечь следующую строку и, если после появления thr есть строка, которая похожа на символьное пространство, то заменить это a на ...

...