.NET 5 분할 방법을 사용하여 PowerShell 7.1+에서 문자열 분할

.NET 4를 기반으로 하는 버전 5에서 Powershell을 사용하기 시작했습니다.

Powershell 7(어쨌든 7.1 이상)은 .NET 5를 기반으로 합니다. 7.1+는 수많은 멋진 기능을 구현했습니다. 모든 변화가 그렇듯,

Powershell에서 코딩할 때 .NET 메서드를 혼합하여 사용합니다. 내가 자주 사용하는 한 가지 방법은 분할입니다. 최종 사용자를 위한 기본 국가 코드를 자동으로 식별하기 위해 게임이 지원하는 지역에 문화를 연결하는 프로젝트를 진행하고 있었습니다. 내 목표는 Get-Culture의 표시 이름에서 국가를 가져오는 것이었습니다. PowerShell 5에서는 다음과 같이 할 수 있습니다.

Get-Culture | Select-Object -ExpandProperty DisplayName
English (United States)
$SplitArray = (Get-Culture | Select-Object -ExpandProperty DisplayName).Split("()")
$SplitArray
English
United States
$SplitArray[1]
United States


PowerShell 7.1.3에서 동일한 명령을 실행해 보겠습니다.

Get-Culture | Select-Object -ExpandProperty DisplayName
English (United States)
$SplitArray = (Get-Culture | Select-Object -ExpandProperty DisplayName).Split("()")
$SplitArray
English (United States)
$SplitArray[1]


잠깐, 7.1.3에서는 무슨 일이 있었나요? 분할이 작동하지 않아 배열의 마지막 항목이 반환되지 않았습니다.

살펴보겠습니다. 몇 가지 기본 정보를 가져오기 위해 cmdletGet-Culture을 사용했습니다. () 두 문자에 분할 방법을 사용할 때. PowerShell 5는 우리가 문자열을 분할하려는 것을 확인하지만 자동으로 문자열을 () 문자로 분할하도록 변환합니다. .NET 4에서 문자열 클래스에는 문자를 매개변수 유형으로 사용하는 메서드만 있었습니다. PowerShell은 이를 확인하고 자동으로 변환하여 삶을 좀 더 쉽게 만듭니다. 여기에는 문자 배열이므로 'OR'(|)이 암시되어 있습니다.

PowerShell 7이 다르게 작동하는 이유는 무엇입니까? .NET 5에서 문자열 클래스에는 문자열을 허용하는 몇 가지 추가 매개 변수가 있습니다. PowerShell 7은 자동 작업을 수행하지 않습니다. 여기서 차이점을 실제로 설명하기 위해 동일한 출력을 얻기 위해 위의 Get-Culture를 사용하여 문자 대신 문자열로 분할하겠습니다. 이것은 추악한 방법이지만 데모 목적입니다.

$SplitArray = (((Get-Culture | Select-Object -ExpandProperty DisplayName).Split("English ("))[1].Split(')'))[0]
$SplitArray
United States


좋아, 깔끔하지만 조금 못 생겼어. 우리는 두 번 헤어집니다. 더 좋은 방법은 무엇입니까? 문자 타입 변환 배열을 사용할 수 있습니다!

$SplitArray = ((Get-Culture | Select-Object -ExpandProperty DisplayName).Split([char[]]"()"))[1]
$SplitArray
United States


즐거운 코딩하세요!

좋은 웹페이지 즐겨찾기