Рейтинг:
8
Perić Željko
Если вам лень изучать регулярное выражение , Вот еще одно не столь элегантное решение :
string Check(string str)
{
string s = str.Replace(" ","").Replace("Hundred","*");
string [] s1 = s.Split('*');
if(s1[1].Contains("Thousand") ||
s1[1].Contains("Hundred") ||
s1[1].Contains("Lakh"))
{
str = str.Replace("Hundred","");
}
return str;
}
После проверки строки,
слово сто будет удалено, если за ним последуют слова,
Тысяча, или СТО, или лакх.
Всего наилучшего,
Желько Перич
Рейтинг:
12
OriginalGriff
Если вы имеете в виду "если слово" сто" следует за тысячью или...", как в вашем примере, то попробуйте это:
(?<=(Thousand|Hundred|Lakh)\s+)Hundred
Чтобы удалить это слово:
public static Regex remove = new Regex("(?<=(Thousand|Hundred|Lakh)\\s+)Hundred", RegexOptions.Compiled);
...
string result = remove.Replace(InputText,"");
Если вы хотите играть с регулярными выражениями, получите копию
Экспрессо[
^] - это бесплатно, и он проверяет и генерирует регулярные выражения.
Member 12926744
Однако я получаю ошибку "слишком много аргументов", давая этот код.
OriginalGriff
Это было очевидно: лишняя тесная скобка.
Pete O'Hanlon
Небольшая поправка, используйте строку.Пустой, а не "".
OriginalGriff
Не коррекция, а просто стилевая точка. Они идентичны, они даже разделяют одну и ту же ссылку:
Console.WriteLine(Object.ReferenceEquals("", string.Empty) ? "Yes" : "No");
всегда будет давать вам "да".
Лично я нахожу "" гораздо более читабельным, чем строка.Пустой
Pete O'Hanlon
Они точно такие же (из-за интернирования), но я предпочитаю использовать строку.Empty over ", чтобы усилить то, что тестирование на пустые строки не должно предполагать или полагаться на то, что это"".
Member 12926744
Спасибо.Это сработало.Еще одна вещь, как устранить лишние пробелы перед словом сто, потому что после удаления слова есть три белых пробела после тысячи.
OriginalGriff
Да ладно тебе! Это не совсем сложно, если вы используете регулярные выражения!
Просто переместите пробел за пределы исключенной группы префиксов...
(?<=(тысяча|сто|лакх))\s+сто