안녕하세요, 여행벌입니다.

저번 포스팅에 이어 자주 사용되는 String 클래스 메소드를 정리해보겠습니다.


public int indexOf(int ch)
// 매개변수로 들어온 문자가 처음 등장하는 인덱스를 반환하는 메소드

public int indexOf(int ch, int fromIndex)
// fromIndex 부터 매개변수로 들어온 문자가 처음 등장하는 인덱스를 반환하는 메소드

public int indexOf(String str)
// str이 부분 문자열로 처음 등장하는 인덱스를 반환하는 메소드

public int indexOf(String str, int fromIndex)
// fromIndex 부터 str이 부분 문자열로 처음 등장하는 인덱스를 반환하는 메소드

public int lastIndexOf(int ch)
// 매개변수로 들어온 문자가 마지막으로 등장하는 인덱스를 반환하는 메소드

public int lastIndexOf(int ch, int fromIndex)
// fromIndex 부터 매개변수로 들어온 문자가 처음 등장하는 인덱스를 반환하는 메소드

public int lastIndexOf(String str)
// str이 부분 문자열로 처음 등장하는 인덱스를 반환하는 메소드

public int lastIndexOf(String str, int fromIndex)
// fromIndex 부터 str이 부분 문자열로 처음 등장하는 인덱스를 반환하는 메소드

public String substring(int beginIndex)
// beginIndex 부터 끝까지 부분 문자열을 반환하는 메소드

public String substring(int beginIndex, int endIndex)
// beginIndex 부터 endIndex 전까지 부분 문자열을 반환하는 메소드

public int indexOf(int ch)

 indexOf는 입력으로 들어온 문자가 처음 등장하는 인덱스를 반환하는 메소드입니다. 하지만 매개변수의 자료형을 보시면 char가 아니라 int 인 것을 확인할 수 있습니다. 이는 아스키코드로 변환해서 입력받기 때문입니다. 또, 입력으로 들어온 문자가 등장하지 않으면 -1 을 반환합니다.

package Hello;

public class test{
	public static void main(String args[]) {
		String str1 = "traev5el";
		System.out.println(str1.indexOf('x'));
		System.out.println(str1.indexOf('e'));
		System.out.println(str1.indexOf('5'));
		System.out.println(str1.indexOf(53)); // 아스키코드 53번은 '5'
	}
}
-1
3
5
5

 "traev5el" 에는 'x'가 없으므로 -1을 반환하고, 가장 처음 등장하는 'e' 는 4번 째 문자이므로 인덱스 3을 반환하고 '5' 는 인덱스 5, 또 53은 아스키코드 '5' 를 의미하므로 마찬가지로 인덱스 5를 반환하는 것을 확인할 수 있습니다.

public int indexOf(int ch, int fromIndex)

 indexOf 메소드는 메소드 오버로딩이 되어있습니다. 두 번째 인자로 탐색을 시작할 위치를 지정할 수 있습니다.

package Hello;

public class test{
	public static void main(String args[]) {
		String str1 = "traev5el";
		System.out.println(str1.indexOf('x', 0));
		System.out.println(str1.indexOf('e', 4));
		System.out.println(str1.indexOf('t', 0));
		System.out.println(str1.indexOf(53)); // 아스키코드 53번은 '5'
	}
}
-1
6
0
5

 0번 인덱스부터 (처음부터) 탐색해도 'x' 는 존재하지 않으므로 -1을 반환하고, 인덱스 4번부터 'e' 를 찾으면 첫 번째 등장하는 'e'가 아닌 그 다음 'e' 를 탐색하는 것을 확인할 수 있습니다.

public int indexOf(String str)

 indexOf 메소드에는 매개변수로 String 인스턴스를 전달할 수도 있습니다. 그러면, 전달받은 매개변수가 부분 문자열로 처음 등장하는 인덱스를 반환해줍니다.

package Hello;

public class test{
	public static void main(String args[]) {
		String str1 = "abcdabcdabcd";
		System.out.println(str1.indexOf("abcd"));
		System.out.println(str1.indexOf("bcdb"));
		System.out.println(str1.indexOf("dabc"));
	}
}
0
-1
3

 문자열 "abcdabcdabcd" 에서 먼저 "abcd" 를 찾아보면 0번 인덱스부터 3번 인덱스까지 "abcd"가 존재하는 것을 확인할 수 있습니다. 따라서, 0 을 반환해줍니다.

 "bcdb" 는 존재하지 않으므로 -1을 반환해주고, "dabc" 는 3번 인덱스부터 6번 인덱스까지 "dabc"가 처음 등장하므로 3을 반환해줍니다.

public int indexOf(String str, int fromIndex)

마찬가지로 fromIndex 부터 str이 부분 문자열로 처음 등장하는 부분의 인덱스를 반환해줍니다.

package Hello;

public class test{
	public static void main(String args[]) {
		String str1 = "abcdabcdabcd";
		System.out.println(str1.indexOf("abcd", 9));
	}
}

 "abcdabcdabcd" 에서 9번 인덱스부터 탐색을 진행하면 "bcd" 에서 "abcd"를 찾는 것이므로 -1을 반환합니다.

public int lastIndexOf(int ch)
public int lastIndexOf(int ch, int fromIndex)
public int lastIndexOf(String str)
public int lastIndexOf(String str, int fromIndex)

 indexOf 메소드와 사용방법은 동일하나 lastIndexOf 는 메소드 이름 그대로 마지막 인덱스를 반환해줍니다.

package Hello;

public class test{
	public static void main(String args[]) {
		String str1 = "abcdabcdabcd";
		System.out.println(str1.lastIndexOf('c'));
		System.out.println(str1.lastIndexOf("abcd"));
	}
}
10
8

public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex)

 substring 메소드를 이용하면 문자열에서 일부분만 부분 문자열로 새롭게 생성할 수 있습니다. beginIndex는 어디서부터 자르기 시작할지를 나타내는 값이고, endIndex는 endIndex 전까지만 문자열을 자르겠다는 뜻입니다.

package Hello;

public class test{
	public static void main(String args[]) {
		String str1 = "abcdabcdabcd";
		System.out.println(str1.substring(5));
		System.out.println(str1.substring(4, 8));
	}
}
bcdabcd
abcd

이상으로 자주 쓰이는 String 클래스 메소드 정리를 마무리해보겠습니다.

 

+ Recent posts