대소 문자를 혼합하여 테스트하거나 사용자 입력을 대소 문자를 혼합하여 변경하는 방법을 알아 내려고합니다.
현재 내 코드는 다음으로 구성됩니다.
$Type = Read-Host 'Enter MY, OLD, NEWTest, Old_Tests'
그러나 사용자가 정확한 대소 문자를 입력했는지, 그리고 대소 문자를 올바른 대소 문자로 변경하지 않았는지 확인해야합니다. 나는 여기와 다른 웹 사이트에서 너무 많은 다른 질문을 검토했지만, 내가 이해할 수있는 방식으로 혼합 케이스의 유효성을 확인하는 것에 대해 실제로 이야기하는 것은없는 것 같습니다.
나는 누구에게도 나를 위해 코드를 작성해달라고 요청하지 않습니다. 항목의 유효성을 검사하고 변경하는 방법을 이해할 수있는 샘플 코드를 요청하고 있습니다.
PowerShell은 기본적으로 대 / 소문자를 구분하지 않는 비교를 수행하므로 질문의 첫 번째 부분에 답하려면 대 / 소문자 구분 비교를 수행해야합니다 -ceq
.
$Type = Read-Host 'Enter MY, OLD, NEWTest, Old_Tests'
($Type -ceq 'MY' -or $Type -ceq 'OLD' -or $Type -ceq 'NEWTest' -or $Type -ceq 'Old_Tests')
더 간단한 해결책은 대소 문자 구분을 사용하는 것이지만 -ccontains를 포함합니다.
('MY', 'OLD', 'NEWTest', 'Old_Tests' -ccontains $Type)
케이스를 수정할 수있는 한 가지 방법은 다음과 같습니다.
$Type = Read-Host 'Enter MY, OLD, NEWTest, Old_Tests'
If ('MY', 'OLD', 'NEWTest', 'Old_Tests' -cnotcontains $Type){
If ('MY', 'OLD', 'NEWTest', 'Old_Tests' -contains $Type){
$TextInfo = (Get-Culture).TextInfo
$Type = Switch ($Type) {
{$_ -in 'MY','OLD'} { $Type.ToUpper() }
'NEWTest' { $Type.Substring(0,4).ToUpper() + $Type.Substring(4,3).ToLower() }
'Old_Tests' { $TextInfo.ToTitleCase($Type) }
}
} Else {
Write-Warning 'You didnt enter one of: MY, OLD, NEWTest, Old_Tests'
}
}
Write-Output $Type
설명:
먼저 허용되는 4 개의 단어 ( -cnotcontains
대소 문자 구분 없음)에 대해 대소 문자가 올바른지 테스트합니다 . 대소 문자가 정확하지 않은 경우 텍스트가 올바른지 테스트합니다 (대소 문자 구분에 신경 쓰지 -contains
않음).
텍스트가 정확하면 Switch 문을 사용하여 사례를 적용하려는 다양한 시나리오를 처리합니다.
첫 번째 스위치 테스트는 처음 두 단어를 일치시키고 단순히 ToUpper()
문자열 메서드를 사용하여 대문자로 표시합니다 .
두 번째 전환 테스트는 문자열 메서드 SubString
를 사용하여 첫 번째 문자 (0)에서 시작하여 4 자 길이를 취하는 문자열의 하위 집합을 가져옵니다. 이를 ToUpper로 대문자로 입력 한 다음 4 번째 문자부터 시작하여 문자열의 다음 3 개 문자를 추가하여 ToLower()
.
get-culture cmdlet에서 가져온 .NET 메서드로 처리하는 마지막 스위치 테스트는 제목 대소 문자를 문자열로 만들 수 있습니다 (각 단어의 첫 글자를 대문자로 만듭니다).
입력 된 텍스트가 우리가 사용하는 옵션 중 하나와 일치하지 않는 경우 write-warning
(PowerShell 4 이상이 필요할 수 있습니다 (이를 변경하지 않은 경우 write-host
)) 콘솔에 경고를 인쇄합니다.
마지막으로 입력 한 내용이 무엇이든 stdout에 Write-Output
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다