2013-06-29 2 views
2

Я хочу удалить [число] из строки;Regex, который заменяет [число] из строки

вход примеры:

1 - домашний адрес [мой первый домашний адрес # 12] [1350]
2 - некоторый текст здесь (некоторый текст здесь) некоторые
3 - привет Dolor сидеть Амет [Kost улица # 74] [1008]

Выход примеры:

1 - домашний адрес [мой первый домашний адрес # 12]
2 - некоторый текст здесь (некоторый текст здесь) некоторые
3 - привет Dolor сидеть Амет [Kost улица # 74]

Я «пробовал

var pattern = @"^[\d+]$"; 
var result = Regex.Replace(value, pattern, ""); 

Я хочу удалить жирный текст с его квадратичными символами„[“&„]“, и если она не содержит это вообще, а затем оставить как есть (см. второй пример).

+0

пожалуйста, указать причину -1 – levi

+4

пожалуйста, покажите нам, что вы пробовали до сих пор – Xie

+0

также показывают нам ожидаемые входы и выходы. –

ответ

1

Попробуйте следующее:

input = "home address [my first home address #12] [1350]" 
string pattern = @"\[\d+\]"; 
string replacement = " "; 
Regex rgx = new Regex(pattern); 
string result = rgx.Replace(input, replacement); 

Update: (После того, как вопрос был обновлен с некоторым кодом ...)

var pattern = @"^[\d+]$"; 

Эта модель будет работать только против чисел. Следующий шаблон должен работать для вас:

var pattern = @"\[\d+\]"; 
+0

У меня возникает ощущение, что он предоставляет номер. –

3

узор вы пытались "^[\d+]$ почти правильно! Проблема с этим шаблоном заключается в том, что вы используете привязки ^...$, которые в основном означают, что шаблон будет соответствовать цифрам, заключенным в фигурные скобки, если они являются единственной строкой символов на входе. See the MSDN documentation on Anchors for a more technical summary.

Узор \[\d+\] будет соответствовать любым цифрам, заключенным в квадратные скобки.

Использование Regex.Replace: -

input = Regex.Replace(input, @"\[\d+\]", string.Empty); 
+0

Я думаю, что это соответствует вашим ожидаемым вводам и выводам, но у меня также создается впечатление, что вы хотите снять брекеты и оставить номер? Вопрос до сих пор не ясен. –

+0

@FabianBigler, ваш шаблон не будет работать.Это должно быть '@" \ [\ d + \] "' :) – vee

0

Для ваших примеров, вам не нужно регулярное выражение.

string address = "home address [my first home address #12] [1350]"; 

if(address.Count(x => x == '[') >= 2)) 
    address = address.Substring(0, address.LastIndexOf('[')); 
+0

На поверхности вы правы, это разрешает пример. Однако первая строка имеет символ пробела в конце строки, который переносится на нужный вывод: http://stackoverflow.com/posts/17380604/edit. Ваше решение здесь удалит эти пробелы. –

+0

Я думал, что это была ошибка. В этом случае вы можете удалить метод 'Trim()' в конце, поскольку это было добавлено только для удаления дополнительного места. (Я обновил ответ) – keyboardP

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