문자열 메소드
JAVA는 문자열(문자의 집합)을 처리하는 다양한 메소드를 제공한다.
문자열 메소드란
JAVA는 문자열을 저장하는 하나의 String클래스를 제공하고, 이 클래스에 다양한 메소드를 내장시켜 편리하게 문자열을 처리할 수 있다.
문자열 메소드 사용법
String클래스 타입의 변수를 선언하고 접근연산자( . )을 이용해 '변수이름.문자열메소드()' 이와 같은 구조로 사용할 수 있다.
length()
문자열의 길이를 알려주는 메소드이다.
예를 들어
'안녕하세요? 반가워요.'라는 문자열의 길이를 출력한다면 이렇게 할 수 있다.
String intro = "안녕하세요? 반가워요.";
int introSize = intro.length();
System.out.println(introSize);
//결과: 12
결과가 9가 아닌 12가 나온 이유는 특수문자와 공백도 문자열에 포함하기 때문이다.
length()메소드는 문자열 개수를 돌려줄 뿐 아니라 배열의 개수도 돌려준다. (replace(), subString(), split() 예시 참고)
startsWith(),endsWith()
startsWith(): 문자열의 처음이 괄호안에 있는 특정 문자열인지 확인하는 메소드이다.
endsWith(): 문자열의 끝이 괄호안에 있는 특정 문자열인지 확인하는 메소드이다.
예를 들어
세가지 단어를 입력 받아 단어1,단어2,단어3 이러한 문자열을 for문과 Scanner를 이용해서 만들어 봤다.
Scanner s = new Sanner(System.in);
String result = "";
for(int i=0; i<3; i++){ //마지막 단어는
String a = s.next();
if(i<3-1 && !a.endsWith(",")){
//Scanner로 받은 문자의 마지막이 ,(콤마)가 아니면(맨앞에 논리부정 연산자 (!)사용) 괄호안에 문장을 실행한다.
result = a +",";
}
}
System.out.println(result);
endsWith()메소드를 통해서 받은 문자의 마지막이 ,(콤마)인지 확인하지 않고 추가해도 되지만
사용자가 ,(콤마)를 추가해서 입력했을 경우 2개의 콤마가 출력될 수 있다.
indexOf(), lastIndexOf()
indexOf(): 찾고자 하는 문자열을 괄호안에 입력하면 처음 위치를 돌려준다.
lastIndexOf(): 찾고자 하는 문자열을 괄호안에 입력하면 마자막 위치를 돌려준다.
10문자 정도의 문자열에서 특정 단어를 찾는 것은 쉬울지 모르지만 긴 문장에서는 특정문자열의 위치를 찾는 것은 쉽지 않을것 같다. 관련 예시는 아래 메소드와 함께 정리한 후 적어봤다.
replace(), subString(), split()
replace(): 문자열을 바꿔주는 메소드
subString(): 문자열을 추출하는 메소드
split(): 문자열을 분리하는 메소드
String a = "나는 오늘 문자열 메소드 aaa(), bbb(), ccc()을 공부했다.";
String reResult = a.replace("오늘","2021년 03월 05일");
//괄호안 왼쪽 문자열을 찾아 오른쪽 문자열로 바꿔준다.
System.out.println(reResult);
//결과=> 나는 2021년 03월 05일 문자열 메소드 aaa(), bbb(), ccc()을 공부했다.
String subResult = a.substring(14,29);
//괄호안 왼쪽 숫자 위치에 해당하는 문자열을 찾아 오른쪽 숫자 개수만큼 추출하여 돌려준다.
System.out.println(reResult);
//결과=> aaa(), bbb(), ccc()
String spResult[] = subResult.split(",");
//괄호안에 입력된 문자열로 분리할 문자열을 배열로 분리한다.
for(int i=0; i<spResult.length-1; i++){
//배열은 0부터 있고 length는 1부터 세는 개수이기 때문에 -1한다.
System.out.println(spResult[i]);
}
//결과=>
나는 오늘 문자열 메소드 aaa()
bbb()
ccc()을 공부했다.
마지막으로 indexOf(), lastIndexOf() 메소드를 같이 활용하여 특정 문자를 지우는 코드이다.
String rm = "aaa(), ";
String result = "";
result += a.substring(0,a.indexOf(rm)+1);
//a.indexOf(rm)+1 값이 14이기 1을 더하면 0의 위치에서 문자열 15개 값은 "나는 오늘 문자열 메소드 "이다.
result += a.substring(a.lastIndexOf(rm)+1,a.length());
System.out.println(result);
//결과=> 나는 오늘 문자열 메소드 bbb(), ccc()을 공부했다.
문자열 메소드를 사용할 때 개수, 길이라고 하면 1부터 시작하고
"위치"라고 하면 0부터 시작한다는 것을 주의해야한다.
'Java' 카테고리의 다른 글
JAVA 제어자 접근 제어자, 기타 제어자 (0) | 2021.03.15 |
---|---|
JAVA 인터페이스 (0) | 2021.03.11 |
JAVA JSON value sort / 자바 제이슨 값 정렬 (0) | 2021.03.10 |
JAVA 클래스의 상속/ 클래스 상속 개념 (0) | 2021.03.07 |
JAVA 반복문: for문, 중첩 for문 (1) | 2021.03.03 |