본문으로 건너뛰기

Dart/Flutter - 문자열의 마지막 문자 제거

문자열의 마지막 문자를 제거하는 방법에 대해서 알아보겠습니다.

문자열의 마지막에 Text, 처럼 콤마가 붙거나, 다른 불필요한 문자가 추가되어있을 때 이 문자를 제거하고 싶을 때가 있습니다. 이럴 때 어떻게 제거하는지 예제를 통해 알아보려고 합니다.

1. substring()으로 마지막 문자 제거

substring(start, end)는 문자열의 start index에서 end index 직전까지 잘라서 문자열로 리턴합니다. (start index는 포함되며, end index는 포함하지 않음)

따라서, substring(0, text.length - 1)은 마지막 문자만 제거된 문자열이 리턴됩니다. substring을 사용하는 방법이 가장 직관적이고 간단한 코드로 구현할 수 있는 것 같습니다.

void main() {
String text = "Hello! World! Dart,";

String result = text.substring(0, text.length - 1);
print(result);
}

Output:

Hello! World! Dart

2. StringBuffer와 for문으로 마지막 문자 제거

for문으로 문자열의 문자들을 모두 순회하면서, 마지막 문자만 제외하고 나머지 문자만 문자열로 합치는 방법입니다. 이 과정에서 StringBuffer를 사용하였습니다.

  • sb.write() : 인자로 전달된 문자 또는 문자열을 StringBuffer에 순차적으로 저장
  • sb.toString() : 저장된 문자들을 하나의 문자열로 합쳐서 리턴

for문으로 직접 구현하는 것이기 때문에 직관적이지만 코드 길이가 깁니다.

void main() {
String text = "Hello! World! Dart,";

StringBuffer sb = StringBuffer();
for (int i = 0; i < text.length - 1; i++) {
sb.write(text[i]);
}
String result = sb.toString();

print(result);
}

Output:

Hello! World! Dart

3. 정규표현식으로 마지막 문자 제거

정규표현식을 사용하여 마지막 문자만 제거할 수도 있습니다.

replaceFirst(Pattern, repl)은 문자열에서 패턴과 일치하는 문자열을 1개 찾고 repl로 변경합니다. 아래 예제에서 패턴은 .$이며, 문자열의 끝의 문자 1개를 의미하는 패턴입니다. 따라서 마지막 문자 1개를 빈문자열 ''로 변경하여 제거합니다.

void main() {
String text = "Hello! World! Dart,";

String result = text.replaceFirst(RegExp(r'.$'), '');
print(result);
}

Output:

Hello! World! Dart