Пакет: Как заменить определенную часть текста в переменной, не изменяя все остальное? - PullRequest
0 голосов
/ 07 мая 2019

Поэтому я пытаюсь создать поисковую систему, которая при вводе строки поиска заменяет пробелы знаком «+», и было бы полезно, если бы кто-то указал, какие команды я могу использовать для достижения этой цели.

Пока что я не нашел ни одного человека с таким же вопросом, поэтому я публикую его здесь. Я нашел кого-то с способом обнаружения пробелов в переменной:

if not "%VAR%"=="%VAR: =%"

но заменить их невозможно.

Есть подсказки?

P.S .: Пожалуйста, не рекомендуйте мне PowerShell или другие языки / методы сценариев, как я видел у некоторых людей, у меня есть причина для использования пакета, и я буду придерживаться его.

1 Ответ

0 голосов
/ 07 мая 2019

Итак, позвольте мне объяснить, как работает подстановка.

set "var=This is a line with spaces"
set "var=%var: =+%"
echo %var%

во втором set мы снова set var до %var%, но мы используем подстановку пробелов.Все после : до = является функцией поиска, а все после = до % является функцией замены.Таким образом, %var: =+% означает найти все пространство и заменить на + Следовательно, результатом вышеупомянутого кода будет:

This+is+a+line+with+spaces

Очевидно, что переменной можно манипулировать несколько раз:

set "var=This is a line with spaces"
set "var=%var: =+%"
set "var=%var:spaces=pluses%
echo %var%

вы также можете использовать подстановку для сравнения без подстановки, используя set:

set "var=This is a line with spaces"
if /i "%var: =+%"=="This+is+a+line+with+spaces" echo Matched!

Я предлагаю вам прочитать справку, запустив set /? из cmdline.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...