Как удалить специальное форматирование с помощью PowerShell (вкладки, ввод Cariage, символы пробела, переводы строки и т. Д.) - PullRequest
1 голос
/ 26 сентября 2011

enter image description here

Я хочу удалить эти возвраты каретки (или, по крайней мере, я так думаю) с помощью PowerShell, но у меня возникают проблемы при этом.Я использовал:

-замена "` n "," "

-замена" `t", ""

-замена "` b ", ""

-заменить "` r "," "

, похоже, ничего не работает.какие-либо предложения?

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Если вы хотите быть осторожным с удалениями, один грубый, но эффективный метод - использовать объект кодировки .Net ASCII, чтобы получить числовое значение символа (ов), вызывающего сбой:

$text = "Test`n`b`r"
$enc = New-Object System.Text.ASCIIEncoding
$text.ToCharArray() | Foreach-Object { echo "$($_) $($enc.GetBytes($_))" }

Длякаждый символ в строке вашего текста, этот код будет выводить символ, а затем его числовое значение.Это будет выглядеть примерно так (символы в скобках не будут отображаться в реальном выводе, они есть для пояснения):

T 84
e 101
s 115
t 116

 10 (`n)
 8  (`b)
 13 (`r)

Запустив его в одной строке вашего CSV-файла, вы должныв состоянии обнаружить то, что должно быть раздето.Затем вы можете выполнить замену, преобразовав числовое значение обратно в символ ASCII, который он представляет.Например, оба эти утверждения будут удалять символ `b из вашего текста:

$text -replace "`b",""
$text -replace $enc.GetChars(8),""
0 голосов
/ 26 сентября 2011

попробуйте использовать регулярное выражение:

[regex]::Replace("←xxxx←", "←" , "" ) # give xxxx

или если значения являются числами

[regex]::Replace("←356←", "\D" , "" ) # give 356
...