Я написал скрипт, который захватывает каждую строку в файле .txt, по одной строке за раз, и, прежде чем перейти к следующей строке, выполняется действие. Допустим, это текстовый файл:

[Foo]
(Bar)

Чтобы сделать его более простым для понимания, скажем, вот что делает мой скрипт:

Reads the first line in the text file and sets the line as $currentLine; [Foo]
Echo the $currentLine; [Foo]
Reads the next line in the text file and sets the line as $currentLine; (Bar)
Echo the $currentLine; (Bar)

Моя проблема в том, что мне нужно, чтобы "[Foo]" было "\[Foo\]" а "(Bar)" - "\(Bar\)" чтобы правильно использовать строки в моем реальном скрипте. Есть ли эффективный способ сделать это? Или мне нужно написать что-то, что проверяет "(" , ")" , "[" и "]" затем заменяет их на "\(" , "\)" , "\[" и "\]"?

2 ответа2

2

Насколько я могу судить (и я совсем не уверен, что могу сказать правильно), вы ищете функцию .replace .

В качестве примера можно сделать следующее:

$a = "(bob)"
$a.Replace('(',"\(")

Возвращает \(bob

Все замены могут быть сделаны таким образом

0

Я не могу поместить это в комментарий без замены символов, поэтому я помещаю это в ответ. Я все время использую "ren", как я прокомментировал. то есть "REN *(BAR).* *(USA).*" Будет делать то, что требуется. Я думаю, что это может быть неочевидно, что вы можете легко подстановочные знаки переименования. Вы также можете использовать "?msgstr "в спецификации файла для обозначения подстановочного знака из одного символа.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .