programing

전원 셸에서 공백을 두 개 이상 제거하는 중

css3 2023. 9. 27. 18:05

전원 셸에서 공백을 두 개 이상 제거하는 중

파워셸에서 하나 이상의 흰 공간을 제거할 방법을 찾고 있었습니다.

하지만 제가 발견한 것은 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

두 문자열 모두 길이가 같지만 정규화되지 않은 대체 항목은 단일 공간, 단일 탭 및 단일 새 줄 공백이 수정되지 않은 상태로 실행됩니다.인접한 공백 문자가 동일하든 그렇지 않든 동일하게 작동합니다.

추가 설명서

'[     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