본문 바로가기

별걸다하는 IT/프로그래밍언어

[JAVA 자바] substring 특정 위치부터 특정 위치까지 문자열 파싱하는 법, 인덱스로 문자열 자르기 (String클래스 메서드)

안녕하세요 

양햄찌 블로그입니다.

오늘은 요청을 받아 오랜만에 자바에 대한 포스팅을 작성해보려고 합니다.

 

오늘 주제는~~

문자열 파싱하는 법, 문자열 자르는 방법 알아보기

첫번째 포스팅입니다.

 

먼저 문자열을 파싱하려면 문자열이 있어야겠죠?

자바는 문자열을 String이라는 클래스의 객체에다가 저장하고 있습니다.

public class Main {
	public static void main(String[] args) {
		String str = "jhnyang.tistory.com";
	}
}

요런식으로요~!

문자열 파싱법

암튼 문자열을 자르는 방법에는 다양한 방법이 있을 수 있는데요.

 몇번째부터 몇번째까지~ 이런식으로 위치에 해당하는 부분을 문자열로 잘라서 뽑아내고 싶으면 String 클래스의 substring을 사용하면 됩니다.

구분자가 중간 중간 있어, 구분자를 기준으로 문자열을 토막내고 싶을 경우, String클래스의 split 메서드나 StringTokenizer클래스를 사용하시면 돼요. 

substring 메서드 사용법 알기

이 중 오늘은 인덱스 기준으로 문자열을 추출하는 String 클래스의 substring부터 알아봅시다.

 

substring은 내가 문자열 몇번째 글자부터 몇번째 글자까지 뽑아서 알려줘~~ 할 때 사용하는 메서드예요.

바로 요 메서드이죠. 

substring이 오버로딩 되어 있는 것을 확인할 수 있습니다.

substring(n) 했을 경우 n은 index위치입니다. index는 0부터 시작하기 때문에 실질적으로는 n+1번째 글자를 가리키는 것이죠. 

마찬가지로 substring(a,b)했을 경우 a+1글자부터 b+1글자까지라고 생각하기 쉬운데,

뒤에 오버로딩 된건 b를 포함하지 않고 그 전까지라 실질적으로는 a+1부터 b까지가 됩니다.

 

[substring 기본사용예시]

public class Main {
	public static void main(String[] args) {
		String str = "jhnyang.tistory.com";
		String piece1 = str.substring(3);
		String piece2 = str.substring(3, 7);

		System.out.println(piece1);
		System.out.println(piece2);
	}
}

인덱스 3부터 끝까지 출력해보고

인덱스 3부터 4자리만큼 출력하고 싶으면 3+4인 7을 써주면 됩니다.

3,4,5,6 총 4글자가 뽑히니까요~~! 

결과가 잘 포함된 것을 확인할 수 있습니다.

이렇게 잘린거죵 

다양하게 사용해보기

■ 뒤에서 몇글자만 자르고 싶다

public class Main {
	public static void main(String[] args) {
		String str = "jhnyang.tistory.com";
		String piece1 = str.substring(str.length()-3);
		System.out.println(piece1);
	}
}

요렇게 String클래스의 length 메서드를 이용해서 사용해주면 깔끔하죠?

str.length() -3 해주니, 뒤에서 3번째 전부터 출력하는거라 com이 나왔습니당.

 

 특정 문자열이 나오는 위치부터 쭉 자르고 싶다.

public class Main {
	public static void main(String[] args) {
		String str = "jhnyang.tistory.com";
		String piece = str.substring(str.indexOf("ti"));
		System.out.println(piece);
	}
}

특정 문자열의 index 위치를 리턴해주는 String클래스의 indexOf 메서드를 활용해봅시다.

str.indexOf("ti")을 통해 ti이 나오는 시작위치를 반환하여 시작위치 값으로 사용했어요.

결과가 tistory.com으로 잘 나오는 것을 확인할 수 있습니다.

 

 만약, substring의 인자값으로 문자열에서 벗어나는 위치를 줬을 경우엔 어떻게될까요?

public class Main {
	public static void main(String[] args) {
		String str = "tistory";
		String piece = str.substring(3, str.length()+2);
		System.out.println(piece);
	}
}

문자열 str이 tistory로 총 7글자인데, index 3부터 index 9전까지 출력하라 명령해봤습니다.

넵 예측하셨다시피 인덱스아웃오브 바운드 익셉션이 발생합니다.

 

오늘은 매우 간단한 메서드 String 클래스의 substring에 대해 살펴봤습니다.

다음 시간에는 딜리미터(delimeter)를 활용해 파싱하는 법에 대해 다뤄보도록 할게요.

고생하셨어요 다음에봐요~