전원 셸에서 공백을 두 개 이상 제거하는 중
파워셸에서 하나 이상의 흰 공간을 제거할 방법을 찾고 있었습니다.
하지만 제가 발견한 것은 php로 하는 방법입니다."두 개 이상의 공백 제거"
유사한 정규식이 있을 것입니다.
파워셸에서 같은 것을 얻는 방법은?
제 끈은 이렇습니다.
Xcopy Source Desination
일부 선에는 원본과 대상 사이에 둘 이상의 공백이 있을 수 있습니다.
여러 개의 연속된 공백 문자를 단일 공간으로 축소하려면 다음을 사용하여 수행할 수 있습니다.-replace
교환입니다.생각해보면...
PS> $beforeReplace = ' [ Hello, World! ] '
PS> $beforeReplace
[ Hello, World! ]
PS> $beforeReplace.Length
29
...당신은 전화를 할 것입니다.-replace
이런 연산자...
PS> $afterReplace = $beforeReplace -replace '\s+', ' '
PS> $afterReplace
[ Hello, World! ]
PS> $afterReplace.Length
19
첫번째 매개변수는-replace
는 일치하는 정규 표현식 패턴이며, 두 번째 매개 변수는 일치하는 항목을 대체하는 텍스트입니다.\s
공백 문자와 일치합니다.+
는 하나 이상의 발생과 일치함을 나타냅니다. 즉, 하나 이상의 인접한 공백 문자가 단일 공백으로 대체됩니다.
공백 정규화 없이 교체
모든 공백 문자를 공백으로 정규화할 필요가 없으므로 독립 실행형 공백 문자는 그대로 두어도 무방합니다. 그러면 긴 문자열의 경우 이 변형으로 더 나은 성능을 볼 수 있습니다.
PS> $afterReplace = $beforeReplace -replace '\s{2,}', ' '
PS> $afterReplace
[ Hello, World! ]
PS> $afterReplace.Length
19
그\s{2,}
는 "앞의 요소와 최소 두 번 일치"라는 의미의 한정자를 사용하므로 독립 실행형 공백 문자는 대체되지 않습니다.입력 문자열에 공백 문자가 섞여 있을 경우...
PS> $beforeReplace = "1Space: ;2Space: ;1Tab:`t;2Tab:`t`t;1Newline:`n;2Newline:`n`n;"
PS> $beforeReplace
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline:
;2Newline:
;
PS> $beforeReplace.Length
57
...두 접근 방식의 결과가 어떻게 다른지 주목하십시오...
PS> $afterReplaceNormalized = $beforeReplace -replace '\s+', ' '
PS> $afterReplaceNormalized
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline: ;2Newline: ;
PS> $afterReplaceNormalized.Length
54
PS> $afterReplaceUnnormalized = $beforeReplace -replace '\s{2,}', ' '
PS> $afterReplaceUnnormalized
1Space: ;2Space: ;1Tab: ;2Tab: ;1Newline:
;2Newline: ;
PS> $afterReplaceUnnormalized.Length
54
두 문자열 모두 길이가 같지만 정규화되지 않은 대체 항목은 단일 공간, 단일 탭 및 단일 새 줄 공백이 수정되지 않은 상태로 실행됩니다.인접한 공백 문자가 동일하든 그렇지 않든 동일하게 작동합니다.
추가 설명서
- 를 입력하십시오.
help about_Comparison_Operators
[ Windows PowerShell 2.0 ][ PowerShell(코어) ] - 를 입력하십시오.
help about_Regular_Expressions
[ Windows PowerShell 2.0 ][ PowerShell(코어) ] - .NET 정규 표현 언어 - 빠른 참조
'[ Hello, World! ]' -replace '^\[\s+','[' -replace '\s+]$',']' -replace '\s+',' '
베이컨은 파워쉘이 재미있다는 설명을 가지고 있습니다.도망쳐야 했습니다.'['
와 함께'\'
파워쉘 탈출 캐릭터가 '라는 것을 알면서도 말입니다.
또 다른 방법입니다. -왼쪽 분할은 가변적인 흰색 공간에서 분할합니다.
-split 'Xcopy Source Destination' -join ' '
Xcopy Source Destination
언급URL : https://stackoverflow.com/questions/8686816/removing-more-than-one-white-space-in-powershell
'programing' 카테고리의 다른 글
문자열이 유효한 16진수 색상 표현인지 확인하는 방법은 무엇입니까? (0) | 2023.09.27 |
---|---|
ajax가 servlet에서 보낸 json을 읽는 방법 (0) | 2023.09.27 |
URL 문자열이 절대적인지 또는 상대적인지 테스트하는 방법은 무엇입니까? (0) | 2023.09.27 |
ASP에서 보기의 레이아웃(Master Page)을 변경합니다.재생성하지 않고 NET MVC (0) | 2023.09.27 |
Android 맵 API v2로 맞춤형 비트맵 마커를 만드는 방법 (0) | 2023.09.27 |