<개인공부>/[C#]

[C#] string Trim, TrimEnd, TrimStart에 대해서 (공백제거, 문자제거)

사용자 BlockDMask 2019. 11. 7. 20:25
반응형

안녕하세요. BlockDMask 입니다. 굉장히 오랜만에 글을 작성하네요.

두달동안은 롤 URF, 롤체를 하느라 공부를 안한것 같네요;;; 반성합니다

오늘은 C#에서 양끝, 앞쪽, 뒤쪽의 공백을 제거해주는 Trim, TrimStart, TrimEnd 함수(메서드)에 대해서 알아보려고 하는데요,

사실 Trim, TrimStart, TrimEnd 메서드는 단순히 "공백" 뿐만 아니라 "우리가 원하는 문자(들)"도 제거 할 수 있습니다.

아래 설명에서 자세히 보시죠.

>목차

1. Trim(), TrimStart(), TrimEnd() 메서드의 정의와 사용법

2. 문자열에서 공백을 제거하는 예제

3. Trim(Char[]), TrimStart(Char[]), TrimEnd(Char[]) 메서드의 정의와 사용법

4. 문자열에서 특정 문자들을 제거하는 예제



1. Trim(), TrimStart(), TrimEnd() 메서드의 정의와 사용법



 public string Trim()

현재 문자열의 앞쪽, 뒤쪽 공백을 모두 제거한 문자열을 반환합니다.


 public string TrimStart()

현재 문자열의 앞쪽 공백을 모두 제거한 문자열을 반환합니다.


 public string TrimEnd()

현재 문자열의 뒤쪽 공백을 모두 제거한 문자열을 반환합니다.


- **주의 : 현재 문자열을 변환하는게 아니라, 변환한 문자열을 반환하는 것 입니다.

- Trim(), TrimStart(), TrimEnd() 메서드는 String 클래스 내부에 있는 멤버함수(메서드) 입니다.

- 맨앞, 맨끝의 공백을 제거하는것이므로 특정 문자 사이사이에 있는 공백은 제거할 수 없습니다. (문자 사이사이 공백 제거는 Replace 메서드로 가능)

- '공백'의 기준은 유니코드에 의해 정의된 공백을 말하며 C#에서 Char.IsWhiteSpace() 해당 메서드의 True값이 나오는 값을 말합니다


 간단한 사용예제

string str1 = "     Block D M a s k      ";


string str2 = str1.Trim();

//str2 = "Block D M a s k";

string str3 = str1.TrimStart();

//str3 = "Block D M a s k      ";

string str4 = str1.TrimEnd(); 

//str4 = "     Block D M a s k ";



2. 문자열 양끝, 앞 뒤에서 공백을 제거하는 예제



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
static void Main(string[] args)
{
    Console.WriteLine("0. 원본 스트링 =====================================");
    string str = "   BlockD Mask   ";
    Console.WriteLine(str);
 
    Console.WriteLine("\n1.Trim() ======================================");
    Console.WriteLine($"Trim() 이전: ({str})");
    Console.WriteLine($"Trim() 적용: ({str.Trim()})");
    Console.WriteLine($"Trim() 이후: ({str})");
 
    Console.WriteLine();
    Console.WriteLine("\n2.TrimStart() =================================");
    Console.WriteLine($"TrimStart() 이전: ({str})");
    Console.WriteLine($"TrimStart() 적용: ({str.TrimStart()})");
    Console.WriteLine($"TrimStart() 이후: ({str})");
 
    Console.WriteLine("\n3.TrimEnd() ===================================");
    Console.WriteLine($"TrimEnd() 이전: ({str})");
    Console.WriteLine($"TrimEnd() 적용: ({str.TrimEnd()})");
    Console.WriteLine($"TrimEnd() 이후: ({str})");
 
    Console.WriteLine("\n4.Trim() 함수의 반환으로 새로운 스트링이 생성되는 것 입니다.");
    string trimStr      = str.Trim();
    string trimStartStr = str.TrimStart();
    string trimEndStr   = str.TrimEnd();
 
    Console.WriteLine($"trimStr     : ({trimStr})");
    Console.WriteLine($"trimStartStr: ({trimStartStr})");
    Console.WriteLine($"trimEndStr  : ({trimEndStr})");
 
cs


▶결과

**공백이 제거 되었는지를 확인하기 위해서 "(, )" 소괄호를 표기했습니다


결과를 보면

1. Trim() 메서드는 "앞, 뒤"의 공백을 없애고,

2. TrimStart() 메서드는 "앞"의 공백을 없애고,

3. TrimEnd() 메서드는 "뒤"의 공백을 없애는걸 볼 수 있습니다.


제가 Trim(), TrimStart(), TrimEnd() 함수 적용 이전 이후를 보여드린 이유는, Trim을 했다고 해서 원본 스트링이 변하거나 하지 않는다는 것을 보여드리기 위함 이었습니다. 

또한, 앞과 뒤의 공백만 사라지고 사이사이 공백들은 없어지지 않는다는 점도 다시한번 기억하면 좋을것 같습니다.


==> "원본 스트링을 바꾸는 메서드아닌변환된 스트링을 반환하는 메서 입니다."


3. Trim(Char[]), TrimStart(Char[]), TrimEnd(Char[]) 메서드의 정의와 사용법



많은 분들이 Trim()이 "공백"만 제거해주는 메서드로 알고 계시는데, 전혀 아닙니다.

Trim() 메서드는 공백 뿐만 아니라 특정 char (들)을 앞뒤로 제거해주는 메서드로 얼마든지 변.신. 할수있습니다.


킹갓 Trim().


 Trim(char), TrimStart(char), TrimEnd(char)

- 현재 문자열에서 매개변수로 들어온 char 문자를 앞, 뒤로 제거한 문자열을 반환합니다.
- "공백 대신에 char 문자를 제거해준다" 이말인거죠.

예시)
char c = 'a';
string str = "aaaaaBlockDMaskaaaaaa";

string result = str.Trim(c);    // 혹은 str.Trim('a');
 //result 는 앞뒤로 'a'가 모두 제거된 "BlockDMask" 문자열을 받게됩니다.


 Trim(char[]), TrimStart(char[]), TrimEnd(char[])

- 현재 문자열에서 매개변수로 들어온 char 타입의 배열에 있는 모든 문자들에 해당하는 문자를 앞, 뒤로 제거한 문자열을 반환합니다.
- "공백 대신에 char[] 배열 안에 있는 모든 문자들을 제거해준다" 이말인거죠.

예시)
char[] arr = {'a', 'b', 'c'};
string str = "abcacbabcabcabcabcaBlockDMaskabcacbacacabbcaacbabcabcbcabcbac";

string result = str.Trim(arr);
 //result 는 앞뒤로 'a', 'b', 'c' 가 모두 제거된 "BlockDMask" 문자열을 받게됩니다. (대문자 B는 아닙니다. 대/소문자 다른 문자로 인식)


4. 문자열 양끝, 앞, 뒤에서 특정 문자들을 제거하는 예제



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
static void Main(string[] args)
{
    Console.WriteLine("=====================================");
    Console.WriteLine("0. str1 원본 스트링");
    string str1 = "aaaaaBlockD Maskaaaaa";
    Console.WriteLine($"str1 : {str1}");
 
    Console.WriteLine("\n1.Trim('a') 문자 하나를 매개변수로 넣었을때");
    string trimStr1      = str1.Trim('a');
    string trimStartStr1 = str1.TrimStart('a');
    string trimEndStr1   = str1.TrimEnd('a');
 
    Console.WriteLine($"str1.Trim('a')       : ({trimStr1})");
    Console.WriteLine($"str1.TrimStart('a')  : ({trimStartStr1})");
    Console.WriteLine($"str1.TrimEnd('a')    : ({trimEndStr1})");
 
 
    Console.WriteLine("\n\n=====================================");
    Console.WriteLine("0. str2 원본 스트링");
 
    string str2 = "abbbbaaccccaaBlockD Maskaabcbcbcaabcaccbcbcabca";
    char[] arr = { 'a''b''c' };
 
    Console.WriteLine($"str2 : {str2}");
    Console.WriteLine("char[] arr = {'a', 'b', 'c'}");
 
    Console.WriteLine("\n1.Trim('a') 문자 하나를 매개변수로 넣었을때");
    string trimStr2      = str2.Trim(arr);
    string trimStartStr2 = str2.TrimStart(arr);
    string trimEndStr2   = str2.TrimEnd(arr);
 
    Console.WriteLine($"str2.Trim(arr)       : ({trimStr2})");
    Console.WriteLine($"str2.TrimStart(arr)  : ({trimStartStr2})");
    Console.WriteLine($"str2.TrimEnd(arr)    : ({trimEndStr2})");
}
cs


▶결과

결과를 보면, "공백" ㄴㄴ "문자, 문자들" ㅇㅇ

문자, 문자들을 확실하게 제거 하는 모습을 볼 수 있습니다.

Trim()함수 매우 쓸만하지 않습니까?? 여러분.


감사합니다.

반응형