![]() |
Задать соответствие точному количеству и регистру символов.
Здравствуйте. Для замены целой/части строки я использую данный скрипт:
Скрытый текст
Код:
$samples = Import-Csv '1.txt' -Encoding UTF8 -Delimiter ' ' -Header 'P1','P2' | select @{N='P1';E = {[regex]::Escape($_.P1)}},P2 Проблема в том, что скрипт не чувствителен к регистру и точности строки/части, которую необходимо заменить. Например в файле 1.txt подготовлены строки для замены (вначале стоит то, что искать а через пробел то, чем это заменить): Скрытый текст
textstroka1 newstroka1text
textstroka2 newstroka2text textstroka3 newstroka3text textstroka4 newstroka4text textstroka5 newstroka5text textstroka6 newstroka6text textstroka7 newstroka7text textstroka8 newstroka8text textstroka9 newstroka9text textstroka10 newstroka000text textstroka11 newstroka0000text В файле 2.txt содержится текст: Скрытый текст
textstroka1
textStroka2 textsTroka3 textstRoka4 textstrOka5 textstroka6 textstroka7 textstroka8 textstroka9 textstroka10 textstroka11 Результат работы скрипта получается такой, то есть строки 2,3,4 и 5 не должны быть изменены, так как регистр некоторых букв не соответствует, поисковому запросу. Кроме того строки 10 и 11 заменены некорректно, потому что не учтены все символы при поиске: Скрытый текст
newstroka1text
newstroka2text newstroka3text newstroka4text newstroka5text newstroka6text newstroka7text newstroka8text newstroka9text newstroka1text0 newstroka1text1 Задача состоит в том, чтобы скрипт выдавал следующее: Скрытый текст
newstroka1
textStroka2 textsTroka3 textstRoka4 textstrOka5 newstroka6 newstroka7 newstroka8 newstroka9 newstroka000text newstroka0000text Можно ли подправить данный скрипт, чтоб он производил замену в точности учитывая количество и регистр символов? |
используйте метод replace вместо оператора -replace
|
Код:
$samples = Import-Csv 'C:\temp\3\1.txt' -Encoding UTF8 -Delimiter ' ' -Header 'P1','P2' |
Цитата:
Спасибо. С регистром все наладилось, а проблема с почти одинаковыми строками осталась. |
Цитата:
Цитата:
Цитата:
Попробуйте: Код:
$frep = 'd:\test\1.txt' |
Цитата:
Простая замена строк реализована в методе: Код:
'AaBcCc'.replace('a','z') |
Цитата:
Цитата:
Пример текста, для замены части строки - 9 строка
textstroka1
textStroka2 textsTroka3 textstRoka4 textstrOka5 textstroka6 textstroka7 textstroka8 textstroka9 textstroka11 textstroka10 textstroka11 |
Цитата:
Просто использую цифры от 1 до 9 а дальше буквы алфавита: Скрытый текст
textstroka1
textstroka2 textstroka3 textstroka4 textstroka5 textstroka6 textstroka7 textstroka8 textstroka9 textstrokaА и т.д. В итоге код с задачей справляется. Всем спасибо за помощь и участие. |
Время: 00:12. |
Время: 00:12.
© OSzone.net 2001-