2012-01-06 3 views
1

Мне нужно внести некоторые изменения в динамически сгенерированные строки;Регулярное выражение и замена конкретных полей строки

Пример Строка

продукты [279] Электрические краскораспылителем [21] Аэрограф оборудование [109] Спрей загар оборудование [23] Мини компрессор воздуха [33] Пескоструйная пушка [5] Paint Tank [ 9] Air Краскопульт [26] Пневматические инструменты/Пневматический инструмент [26] Шины Раздувание пушка [10] Air Клепальщик [6] Ручной инструмент [7] Comb/Щетка для волос [4]

Я хочу, чтобы удалить " Продукты [279] "с самого начала (всегда то же самое, кроме номеров) и re поместите остальную часть строки, как это «Electric краскораспылителем [21] - Аэрограф оборудование [109] - ...»

+0

Вам действительно нужно Regex для такой простой задачи? вы пытались это сделать? str = str.Substring (str.IndexOf (']') + 2) ' –

ответ

1

Demo

String sample = @"Products [279] Electric Paint Sprayer [21] Airbrush Equipment [109] Spray Tanning Equipment [23] Mini Air Compressor [33] Sand blasting gun [5] Paint Tank [9] Air Spray Gun [26] Pneumatic tools/Air tools [26] Tire Inflating gun [10] Air Riveter [6] Hand Tools [7] Comb/Hair Brush [4]"; 

// Remove "Products [#] " 
sample = Regex.Replace(sample, @"^Products \[\d+\]\s*", String.Empty); 

// Add hyphens 
sample = Regex.Replace(sample, @"(\[\d+\])(?=\s*\w)", @"$1 - "); 
// the (?=\s*\w) makes sure we only add a hyphen when there's more information 
// ahead (and not a hyphen to the end of the string) 

Результат:

Electric краскораспылителем [21] - Аэрограф оборудование [109] - спрей для загара Оборудование [23] - Мини-компрессор воздуха [33] - Пескоструйный пистолет [5] - Краскораспылитель [9] - Воздушный распылитель [26] - Пневматические инструменты/Воздушные инструменты [26] - Надувной пистолет-распылитель [10] - Воздушный заклепок [6] - Ручной инструмент [7] - Расческа/Щетка для волос [4]

+0

работает как шарм. Благодарю. –

0

Вы можете использовать String.Remove или string.replace, чтобы сделать это. Помните, что это не изменяет эту строку, но возвращает новую.

О, и для поиска Продуктов [XXX] вы можете использовать String.SubString (0, String.IndexOf (']')); Чтобы найти строку, которая включает первый экземпляр ']'.

0

Выполните следующие действия:

  • заменить ^\w+\s+\[\d+\]\s+ ни с чем (удаляет Products [279]<space> в вашем примере);
  • заменить (?<\])(?=\s+.)<space>- глобально.
+0

спасибо #fge, первый работает, а второй дает мне ошибку. –

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