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
설명 :를
먼저 케이스가 correctc인지 테스트합니다. 4 가지 허용 단어 (-cnotcontains
대/소문자 구분 안함)에 대해 t를 사용합니다. 대소 문자가 정확하지 않으면 텍스트가 올바른지 테스트합니다 (대소 문자 구분없이 대처할 필요 없음 -contains
). 텍스트가 정확하면
는 우리는 우리가 케이스를 적용 할 다양한 시나리오를 다루는 스위치 문을 사용
이
첫 번째 스위치 테스트가 처음 두 단어를 일치 단순히 ToUpper()
문자열을 uppercases 방법.
두 번째 스위치 테스트는 문자열 메서드 SubString
을 사용하여 첫 번째 문자 (0)부터 시작하여 길이가 4자인 문자열의 하위 집합을 가져옵니다. ToUpper를 사용하여 대문자로 시작한 다음 문자의 다음 3 문자를 추가합니다.이 문자의 첫 번째 문자는으로 소문자로 시작하는 4 번째 문자부터 시작합니다.
get-culture cmdlet에서 가져온 .NET 메서드를 사용하여 처리하는 최종 스위치 테스트로 제목 Case 문자열을 만들 수 있습니다 (각 단어의 첫 문자를 대문자로 만드십시오).
입력 된 텍스트가 write-warning
(사용하지 않는 경우 PowerShell 4 이상이 필요할 수도 있음) 옵션 중 하나와 일치하지 않는 경우 콘솔에 경고를 인쇄하려면 write-host
으로 변경하십시오.
마지막으로 입력 된 내용은 Write-Output
으로 stdout으로 전송됩니다.
어떻게 newtest를 NEWTest로 변경할 수 있습니까? – Underdog
답변을 업데이트했습니다. –
죄송합니다. Mark, 나는 어제 다른 항목들과 묶여있어 당신의 보호 관찰을 확인할 기회를 얻지 못했습니다. 귀하의 솔루션을 테스트 한 결과 여전히 위 또는 아래로 케이스를 변경하지 않습니다. Enter My, Old, NewTest, Old_Tests : newtest Write-Output = newtest – Underdog