Usuwanie cudzysłowów z ciągu znaków

PowerShell:
Usuwanie cudzysłowów z ciągu znaków

Jak to zrobić:

Możesz użyć operatora -replace do usunięcia cudzysłowów ze stringa. Oto jak:

# Zamień pojedyncze cudzysłowy
$stringWithSingleQuotes = "'Hello, World!'"
$cleanString = $stringWithSingleQuotes -replace "'", ""
Write-Output $cleanString  # Wynik: Hello, World!

# Zamień podwójne cudzysłowy
$stringWithDoubleQuotes = '"Hello, World!"'
$cleanString = $stringWithDoubleQuotes -replace '"', ""
Write-Output $cleanString  # Wynik: Hello, World!

Dla obu typów:

$stringWithQuotes = '"Hi there," she said.'
$cleanString = $stringWithQuotes -replace "[\"']", ""  # Zauważ użycie klasy znaków regex
Write-Output $cleanString  # Wynik: Hi there, she said.

Przykładowe wyjście z konsoli będzie wyglądać mniej więcej tak:

Hello, World!
Hello, World!
Hi there, she said.

Dogłębna analiza

Dawno temu, zanim PowerShell był choćby w planach Microsoftu, przetwarzanie tekstu w Windows często było domeną skryptów wsadowych, które miały ograniczone możliwości. Wprowadzenie PowerShell’a przyniosło potężne funkcje manipulacji tekstem, które uczyniły skryptowanie znacznie bardziej solidnym.

Istnieją alternatywy dla -replace, takie jak użycie metody .Trim() do usunięcia cudzysłowów tylko na początku i na końcu stringa, ale nie oferują one takiej samej kontroli lub wsparcia regex.

# Użycie .Trim() dla cudzysłowów na początku i na końcu
$stringWithQuotes = '"Hello, World!"'
$cleanString = $stringWithQuotes.Trim('"')
Write-Output $cleanString  # Wynik: Hello, World!

Należy zauważyć, że -replace używa regex w tle, więc kiedy pracujesz z nim, pamiętaj, że znaki specjalne muszą być poprzedzone ukośnikiem, jeśli masz na celu ich dopasowanie. Jeśli potrzebujesz bardziej szczegółowej kontroli nad usuwaniem cudzysłowów, zagłębienie się w regex z -replace jest drogą do tego, dającą ci ogromną elastyczność.

Zobacz także