C#으로 문자열의 대문자와 소문자 개수 세는 방법
프로그래밍을 하다 보면 문자열에 포함된 대문자와 소문자의 개수를 각각 세어야 하는 경우가 종종 있습니다. C#에서는 간단한 조건문과 반복문을 활용해 이 작업을 손쉽게 처리할 수 있습니다. 이 글에서는 기본 원리부터 실전 예제까지 자세히 살펴보겠습니다.
대문자 판별 조건
문자열에서 대문자를 세려면 다음 조건을 사용합니다.
myStr[i] >= 'A' && myStr[i] <= 'Z'
이 조건은 현재 문자가 ASCII 코드상 'A'(65)부터 'Z'(90) 사이에 있는지 확인하는 방식입니다.
소문자 판별 조건
마찬가지로 소문자를 세려면 아래 조건을 사용합니다.
myStr[i] >= 'a' && myStr[i] <= 'z'
이 조건은 현재 문자가 'a'(97)부터 'z'(122) 사이에 있는지 검사합니다.
전체 예제 코드
다음 예제는 주어진 문자열에서 대문자와 소문자의 개수를 각각 계산하는 전체 코드입니다. 직접 실행해 보면서 동작을 확인해 보세요.
using System;
public class Demo {
public static void Main() {
string myStr;
int i, len, lower_case, upper_case;
myStr = "Hello";
Console.Write("String: " + myStr);
lower_case = 0;
upper_case = 0;
len = myStr.Length;
for(i = 0; i < len; i++) {
if(myStr[i] >= 'a' && myStr[i] <= 'z') {
lower_case++;
} else if(myStr[i] >= 'A' && myStr[i] <= 'Z') {
upper_case++;
}
}
Console.Write("\nCharacters in lowercase: {0}\n", lower_case);
Console.Write("Characters in uppercase: {0}\n\n", upper_case);
}
}실행 결과
String: Hello Characters in lowercase: 4 Characters in uppercase: 1
코드 동작 원리
위 예제에서는 "Hello"라는 문자열을 사용했습니다. for 반복문을 통해 문자열의 각 문자를 하나씩 검사하며, 소문자 범위('a'~'z')에 해당하면 lower_case 변수를, 대문자 범위('A'~'Z')에 해당하면 upper_case 변수를 1씩 증가시킵니다.
"Hello"는 소문자 4개(e, l, l, o)와 대문자 1개(H)로 구성되어 있으므로 위와 같은 결과가 출력됩니다.
추가 팁: char.IsUpper()와 char.IsLower() 메서드 활용
C#에서는 비교 연산자 대신 내장 메서드를 사용할 수도 있습니다. char.IsUpper()와 char.IsLower() 메서드를 활용하면 코드가 더욱 직관적이고 가독성이 좋아집니다.
if(char.IsLower(myStr[i])) {
lower_case++;
} else if(char.IsUpper(myStr[i])) {
upper_case++;
}두 방식 모두 동일한 결과를 반환하지만, 내장 메서드를 사용하면 유니코드 문자까지 고려한 안정적인 판별이 가능하다는 장점이 있습니다. 상황에 맞게 적절한 방법을 선택해 사용하시기 바랍니다.