2012-04-27 3 views
0

У меня есть список, как:как заменить точное слово другим в списке?

  • Георгиевский Fg
  • МИШЕЛЬ FGU
  • Ясир fguh

Я хотел бы заменить Ф.Г., ФГУ и fguh по "fguhCool" Я уже пробовал что-то вроде этого:

  foreach (var ignore in NameToPoulate) 
     { 
      tempo = ignore.Replace("fg", "fguhCool"); 
      NameToPoulate_t.Add(tempo); 
     } 

Но затем "FGU" стать "fguhCoolu" и "fguh" быть приходите «fguhCooluh», есть ли лучшая идея?

Благодарим за помощь.

+0

Какое фактическое правило для выбора запасной части? Это ' fg <другие символы до пробела>'?Или это ' fg <до конца строки>' или просто 'fg '? Вы видите, насколько они отличаются? – yamen

+0

Если это домашняя работа/школьная работа, вы должны пометить ее как таковую. – Tormod

ответ

0

Вы можете использовать регулярные выражения:

Regex.Replace(@"\bfg\b", "fguhCool"); 

\b соответствует так называемой слово границы что означает, что он соответствует beginnnig или конец слова (грубо говоря, но для этого достаточно).

0

Используйте регулярное выражение:

Regex.Replace("fg(uh?)?", "fguhCool"); 

Альтернатива будет заменить длинные слова для коротких, а затем заменить короткий для конечного значения (я предполагаю, что все слова - «ФГ», «FGU» и «fguh» - будет отображаться в том же значении «fguhCool», справа)

tempo = ignore 
    .Replace("fguh", "fg") 
    .Replace("fgu", "fg") 
    .Replace("fg", "fguhCool"); 

Obs .: Это предполагает, что эти слова могут появиться в любом месте в строке?. Если вас беспокоят целые слова (т. Е. Случаи, когда эти слова не подстроки большего слова), то см. Ответ @ Joey (в этом случае простые замены не будут выполняться, регулярные выражения - действительно лучший вариант).

3

Я предполагаю, что это домашнее задание, и что вас проверяют на конкретный алгоритм, а не на любой код, выполняющий эту работу.

Это, вероятно, что ваш учитель имеет в виду:

Студенты поймут, что код должен проверить «fguh», а затем «ФГУ» затем «ФГ». Порядок важен, потому что замена «fg» будет, как вы заметили, уничтожить «fguh».

Это будет сделано некоторыми студентами как петля с условиями if-else в них. Чтобы вы не заменили «fg», который находится в уже замененном «fguhCool».

Но тогда вы обнаружите, что алгоритм прерывается, если «fg» и «fgu» находятся в одной строке. Тогда вы не можете позволить присутствию «fgu» запретить вам проверять «fg» в другой части строки.

Ответ, который ваш учитель ищет, вероятно, что вы должны сначала найти «fguh», «fgu» и «fg» (в этом порядке) и заменить их промежуточной строкой, которая не содержит «fg», , Затем, после того как вы это сделаете, вы можете найти эту промежуточную строку и заменить ее на «fguhCool».

Смежные вопросы