Я использую PowerShell для сравнения двух строк с амперсандом (&) в них (т. Е. Строка «Политики & Процедуры»).Как сравнить строки, которые имеют амперсанд в них в PowerShell
Независимо от того, что я пытаюсь, я не могу сопоставить эти строки. Я попытался обрезать струны, чтобы избавиться от лишних пробелов. Я попытался обертыванием строки в одиночных, так и двойных кавычках (и их комбинации):
"Policies & Procedures"
'Policies & Procedures'
"'Policies & Procedures'"
кода я использую для сравнения строк:
if ($term1 -eq $term2) {
do something
}
Проверка строки визуально - они идентичны, однако оператор if никогда не оценивает истину. Есть ли способ сравнить эти две строки так, чтобы он оценивал значение true?
EDIT
Контекст, в котором я делаю эту строку сравнить ищет термин имени в систематике для сайта SharePoint. Вот код, я использую:
function getTerm($termName) {
foreach($term in $global:termset.Terms) {
$termTrimmed = $term.Name.trim()
Write-Host "term name = $termTrimmed" -foregroundcolor cyan
if ($termTrimmed -eq $termName) {
return $term
}
}
return null
}
Я напечатал как term.Name и termName к экрану, и они идентичны. Если в строке нет амперсанда, эта функция работает. Если есть амперсанд, эта функция не работает. Вот как я знаю, амперсанд - проблема.
Только что попробовал приведенный ниже код, и он вернул '$ true', как и ожидалось, вы можете показать код, который генерирует ваши строки? '$ term1 = 'Политика и Procedures'' ' $ term2 =' Политика и Procedures'' '$ term1 -eq $ term2' –
же, возвращает' $ true' для меня. – 4c74356b41
Амперсанд [не является особым символом в строках PowerShell] (https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_quoting_rules), что заставляет вас это вызывать как конкретная вещь, вызывающая проблему? – TessellatingHeckler