본문 바로가기

Java

JAVA 문자열 메소드: 문자열 길이, 문자열 자르기

문자열 메소드

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부터 시작한다는 것을 주의해야한다.