Word найти / заменить: добавить пробел в почтовый индекс с подстановочными знаками

2216
Mark

Используя диалоговое окно «Найти и заменить» в Microsoft Word 2003, я хочу найти в списке адресов почтовые индексы (канадские), в которых нет пробела, например:

M2N3X6 L4C2A9 K5G1S7 

и поместите пробел в середине:

M2N 3X6 L4C 2A9 K5G 1S7 

Это должно быть просто, но у меня есть небольшая проблема с частью «заменить на»: я понял, что в поле «Найти» я вхожу [A-Z][0-9][A-Z][0-9][A-Z][0-9], но в поле «Заменить», как мне добавить пространство в середине, сохраняя персонажи, которые там? Я думал, что это будет что-то вроде \1\2\3 \4\5\6, но это не работает

Любая помощь приветствуется.

2
Это может быть лучшим вопросом для StackOverflow.com вместо этого (о программировании). Какой язык вы используете, и можете ли вы опубликовать код замены в своем вопросе? Mat Carlson 10 лет назад 0
Являются ли эти (неправильные) почтовые индексы длиной всего шесть символов? Они в новой строке каждый раз? nixda 10 лет назад 1
Не программирование - просто использование MS Word 2003 для документа с около 30 страницами адресных меток - Mark 10 лет назад 0
то есть: г-н Джон Доу 123 Any Санкт-Торонто, ON M2N3X5 Mark 10 лет назад 0
Да, почтовые индексы всегда 6 символов в длину - или я думаю, 7 с пробелом. Они обычно находятся на одной линии с городом, провинцией Mark 10 лет назад 0

3 ответа на вопрос

2

The \1 etc. replace expressions, and in order to specify that something is an expression, you enclose it in (). So you need

([A-Z])([0-9])([A-Z])([0-9])([A-Z])([0-9]) 

Then

\1\2\3 \4\5\6 

should work. I think there is a limit on the number of expressions you can have (9, perhaps)

Или, проще говоря, замените `([AZ] [0-9] [AZ]) ([0-9] [AZ] [0-9])` на `\ 1 \ 2`. (И, да! Я не знаю, почему я не нашел это.) Scott 10 лет назад 0
0
Scott

I can’t find any way (in Microsoft Word’s “Find and Replace” dialog) to do full sub-regex replacement, the way you can in programs like sed.  But I did find a multi-step solution to your problem.  First, identify a string that does not appear in your data and does not contain any characters that are special in Word’s “Find and Replace” (e.g., ‘@’ or ‘#’).  (Alternatively, use them but escape them.)  It can be a single character, like ‘|’, so long as it doesn’t appear in your data.  I’ll assume that you’ve chosen “|”.  Now,

  1. Do a search for [A-Z][0-9][A-Z][0-9][A-Z][0-9] and replace with ^&|.  This will tag each non-conformant postal code with a trailing “|”.
  2. Search for [0-9][A-Z][0-9]| and replace with  ^& (with a leading space).  This inserts the space where you want it.
  3. Then search for all occurrences of | and replace with nothing.

You can do this without using wildcard mode:

  1. ^$^#^$^#^$^#^&|.
  2. ^#^$^#| ^&                (or even ^?^?^?| ^&).
  3. | → nothing.

Note that ^$ is equivalent to [A-Za-z], so if your situation is case-sensitive, I guess you need to use the “wildcards”.

Отлично - не знаю, что означает под Регулярное выражение, мне придется поискать его - но это сработало для меня! Спасибо Mark 10 лет назад 0
Это просто термин, который я придумал для обозначения использования таких кодов, как `\ 1`, для включения подстроки того, что вы нашли (используя регулярное выражение) в замену. (В отличие от `^ &`, который Word использует для добавления строки _entire_.) Scott 10 лет назад 0
0
Karen927

Очень простой способ: используйте функцию «Text to Columns» в Excel, а затем используйте формулу CONCATENATE для рекомбинации с пробелом в середине. Формула будет = КОНКАТЕНАТ (А1, "", B1)