2014-11-09 4 views
1

Мне нужно скрыть часть строки. Скрыть все до конца.Заменить группу пробелами

Это легко осуществить с помощью регулярных выражений, как это:

replace("123-134-04", ".(?=.*-)", " ") 

заменить любой символ, если будущая часть строки содержит «-». Таким образом, результат:

"  -04"
Важно сохранить пробелы.

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

Tnanks заранее!

+0

Какой язык/инструмент вы используете для этого и почему вы не можете использовать lookahead? – anubhava

+0

XSLT 2.0 с саксонской реализацией. Да, я могу написать вспомогательные шаблоны или функции, но рекомендуется использовать регулярное выражение. – user2539361

+0

Спецификация xpath не содержит lookahead в regex, и это действительно не работает =) – user2539361

ответ

0

Если число будет заменено символов не слишком сильно отличаются, и у вас есть средства, чтобы соответствовать части должны быть сохранены, вы можете запустить через серию поиска и замены:

replace("12-14-04",    "^.{5}(-[^-]+)$", "  \1") 
replace("123-134-04",   "^.{7}(-[^-]+)$", "  \1") 
replace("adfasd-adf-da7474-04", "^.{17}(-[^-]+)$", "     \1") 

Или вы делаете:

  • разделить строку в позиции, где начинается быть сохранена часть,
  • запустить replace("ALL OF THIS SHOULD BECOME BLANKS", ".", " ") на первой части, и
  • снова присоединяются к ним.
Смежные вопросы