Sring 클래스에는 문자열을 검색할 수 있는 여러가지 메소드들이 있다.
- 이를 통해서 문자열에 특정한 글자가 포함되어 있는지, 어느 위치에 있는지 등을 알 수 있다.
Sring 클래스에는 문자열을 검색할 수 있는 메소드 종류
Contains() 메소드
- String에 특정 문자열이 포함되어 있는지를 체크한다.
- 포함되어 있다면 true, 되지 않았다면 false를 리턴하는 Bool 메소드이다.
- 예시
// b는 true 값을 갖는 경우 string s1 = "mouse, cow, tiger, rabbit, dragon"; string s2 = "cow"; bool b = s1.Contains(s2); WriteLine(b); // True
IndexOf() 메소드
- 문자열에서 특정 문자/문자열이 나타내는 인덱스를 리턴해준다.
- 인덱스는 0부터 시작한다.
- 찾는 문자열이 없을 때 -1를 리턴한다.
- 리턴값이 -1인지 아닌지로 문자열을 포함하고 있는지 알 수 있다.
- 여러가지 방법으로 중복되어 있다.
- 예시
public int IndexOf(char, int, int, StringComparision); public int IndexOf(String, int, int, StringComparision);
- 매개변수 첫번째는 하나의 문자 또는 문자열이다.
- 나머지 매개변수는 없어도 되는데 첫번째 숫자는 시작인덱스,
두번째 숫자는 시작 인덱스에서부터 비교할 글자 수,
마지막의 StringComparison은 비교 방법을 지정하는 열거형이다.
대소문자를 구분하지 않는 비교
- Contains() 메소드는 대소문자를 구별가능하다.
- 따라서, s2 = "Cow"였다면 b는 false를 반환했다.
- 예시
// 대소문자를 구분하지 않고 비교한다면 StringComparison 열거형을 사용하면 된다. public int IndexOf(string value, StringComparison comparisonType);
- StringComparison 열거형은 언어, 정렬순서, 대소문자 구분 여부등을 표현한다.
- 6개의 값을 갖는다.
- CurrentCulture
- CurrentCultureIgnoerCase
- InvatiantCulture
- InvariantCultrureIgnoreCase
- Ordinal
- OrdinalIgnoreCase
- IngnoreCase가 들어 있는 열거형을 사용하면 대소문자를 구분하지 않고 비교가 가능하다.
String.StartWith()와 String.EndWith() 메소드
- StartWith() 메소드는 문자열이 특정 문자열로 시작되는지를 알려준다.
- EndWith() 메소드는 특정 문자열로 끝나는지를 알려준다.
예제 코드
using System;
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{ // string 변수 s1과 s2를 선언하고 초기화한다.
string s1 = "mouse, cow, tiger, rabbit, dragon";
// s2가 "Cow"일 때와 "cow"일 때로 나누어 실행한다.
string s2 = "Cow";
// s1이 s2를 포함하고 있는지 체크한다.
bool b = s1.Contains(s2);
// s2값이 대문자로 시작하는 "Cow"이므로 s1에는 포함되어 있지 않기 때문에 b값은 false가 된다.
// 만약 s2가 "cow"라면 b의 값은 true가 된다.
WriteLine("'{0}' is in the string '{1}' : {2}", s2, s1, b);
if (b)
{
// s1이 s2를 포함되어 있다면 IndexOf() 메소드를 사용하여 몇 번째 인덱스에 위치하는지를 출력한다.
int index = s1.IndexOf(s2);
// 인덱스는 0 부터 시작한다. 이 부분은 s2가 "Cow"라면 실행되지 않는다.
if (index >= 0) {
// s2가 "cow"라면 7번 인덱스에 위치하므로 7를 출력한다.
WriteLine("{0} begins at Index {1}", s2, index);
}
}
// StringComparison을 사용하는 IndexOf() 메소드를 사용하는 예입니다.
// CurrentCultureIgnoreCase를 사용하면 대소문자를 구분하지 않습니다.
if (s1.IndexOf(s2, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
// 리턴값이 -1이라면 s2가 s1에 없다는 뜻이고, 0보다 크거나 같다는 것은
// 찾고자 하는 값이 s1에 포함되어 있다는 뜻이다.
WriteLine("'{0}' is in the string '{1}'", s2, s1);
}
}
}
}
결과
// s2 = "Cow"일 때
'Cow' is in the string 'mouse, cow, tiger, rabbit, dragon' : False
'Cow' is in the string 'mouse, cow, tiger, rabbit, dragon'
// s2 = "cow"일 때
'cow' is in the string 'mouse, cow, tiger, rabbit, dragon' : True
cow begins at Index 7
'cow' is in the string 'mouse, cow, tiger, rabbit, dragon'
'C# > 문법 정리' 카테고리의 다른 글
C# - 그룹 분리자(Group Separator) (0) | 2024.07.11 |
---|---|
C# - String.Format() (0) | 2024.07.10 |
C# - String.Split() 메소드 (0) | 2024.07.08 |
C# - 정적 메소드(static method) (0) | 2024.07.07 |
C# - String 클래스(String Class) (0) | 2024.07.06 |