programing

Powershell에서 공백 문자가 가변적인 분할 문자열

oldcodes 2023. 9. 6. 22:16
반응형

Powershell에서 공백 문자가 가변적인 분할 문자열

문자열 마녀를 분할하여 공백 문자가 가변적이지만 제거하고 싶은 빈 줄을 많이 얻고 싶습니다.이 강령

$text = "Video  Video  Audio  Audio  VBI    VBI"
$text.Split()

이것을 출력합니다.

Video

Video

Audio

Audio

VBI



VBI

PS H:\>

그리고 이것을 원합니다.

Video
Video
Audio  
Audio
VBI
VBI

최신 편집:
이 질문이 여전히 많은 조회수를 기록하고 있다는 것을 알게 되었습니다. 그래서 이 질문을 했을 때 저는 함수 프로그래밍이나 정규 표현식에 대해 전혀 알지 못했다는 것을 분명히 말씀드리고 싶습니다.
공백을 제거하고 문자열에서 배열을 만드는 여러 가지 방법이 있으므로 여기에 언급된 모든 솔루션이 적용됩니다.

파워쉘의-split정규 표현식을 사용하는 연산자.

"Video  Video  Audio  Audio  VBI    VBI" -split '\s+'

@StijnDeVos에서 언급한 바와 같이, 이것은 선행/후행 공백을 제거하지 않습니다.

여기서.\s는 공백 문자를 나타내며,+하나 이상 일치합니다.더욱더 @user3554001의 답변을 따라야 할 이유가 있습니다.

다른 옵션은 빈 문자열을 필터링하는 것입니다.

 "Video  Video  Audio  Audio  VBI    VBI".split()| where {$_}

이 토막글을 사용하여 빈 줄을 제거할 수 있습니다.

$text.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)

-split "Video Video Audio Audio VBI VBI"

분할 명령을 수행하기 전에 공간의 인스턴스를 하나의 인스턴스로 둘 이상 교체합니다.

$($text -replace '\s+', ' ').split()

-split 연산자는 regex 인수를 사용하므로 여러 공백 문자만 일치시킵니다(\s+).

$Text = $text = "Video  Video  Audio  Audio  VBI    VBI"
$text -split '\s+' -match '\S'

Video
Video
Audio
Audio
VBI
VBI

마지막 공백 뒤의 후행 공백은 null 항목이 될 수 있으므로 -match를 사용하면 공백만 제거됩니다.

기타 솔루션:

$text -split ' ' | where {$_.Trim() -ne ''}

또는:

$text.Split(' ').Where({$_.Trim() -ne ''})

언급URL : https://stackoverflow.com/questions/23496105/split-string-with-variable-whitespace-characters-in-powershell

반응형