PreludePowershell: с помощью -split « s +», в отличие от .split « s +»
Я пытаюсь выполнить операцию, которая требует от меня для разбора каждого отдельного слова конкретного файла. Самый простой способ сделать это было бы, чтобы загрузить текст с помощью:
$content = Get-Content -Path .\<filename>
Тогда я сломаю каждое отдельное слово в отдельную строку (это позволяет мне делать подсчет слов И ни одного слова поиск очень быстро) , Проблема заключается в том, когда я затем использовать эту строку кода:
$content.split("\s+")
, который должен создать новую линию (сплит) на каждом (один или более) символ пробела. К сожалению, мои результаты выглядят следующим образом:
$content.split("\s+")
The SpeechSynthe
izer cla
provide
acce
to the functionality of a
peech
ynthe
i
engine that i
in
talled on the ho
t computer. In
talled
peech
ynthe
i
engine
Но когда я бегу
$content -split("\s+")
Результаты будут выходить правильно:
$content -split("\s+")
The
SpeechSynthesizer
class
provides
access
to
the
functionality
of
a
speech
synthesis
Мой вопрос Использование Powershell V.4 У меня возникли проблемы с пониманием разницы между выполнением операции.
$ content.split ("\ s +")
и
$content -split("\s+")
есть. И почему они выводят разные результаты.
Является ли эта функциональность просто сломанной?
Есть ли какая-то другая разница, о которой я не знаю здесь?
Итак, вы говорите, что метод System.String не поддерживает регулярное выражение, и поэтому «\ s +» не означает * одно или несколько пробелов * в контексте «$ content.split (« \ s + ») ' Верный? –
Заметьте, что я говорю не только об этом, но ваш пример говорит сам за себя: все '' 'письма были разделены. * Synthe ** s ** izer * и т. Д. Ваш '$ content.split (" \ s + ")' разделяет 's' и' + '(я думаю,' '\' 'считается неправильным escape-символом и игнорируется). Попробуйте сами. –
Теперь, когда вы указываете это; Теперь я вижу, что это именно то, от чего оно раскалывается! Я также тестировал против $ content.split ("") ', и он работает точно так, как ожидалось. Спасибо, сэр! –