[알고리즘] java 문자열 스킬

Future·2024년 7월 15일
0

알고리즘

목록 보기
13/15

String

문자열 슬라이싱

substring

public String substring (int startIndex, int endIndex) //endIndex는 불포함

String str = "abcdef";
str.substring(2, 4);			//cd

split (특정 문자 기준으로 자를 때)

public String split (String regex)
public String split (String regex, int limit)
//limit개만 구분하고 나머지는 놔둠

String str = "i am a human";
String[] strArr = str.split("\\s");	  	//공백기준 슬라이싱 
										//str[0] = i / str[1] = am / str[2] = a / str[3] = human
String str = "a.b.c";
String strA = str.split("[.]")[0]		//.기준으로 자른 첫번째 String 

참고로, 정규식에서 어떤 문자 기준으로 자르고싶을 때는 [ ]안에 넣어야 한다.
예를 들어, abccbaa를 b를 기준으로 자르고싶으면 split("[b]")

문자열 안에 문자열 포함 여부

  • 문자열.contains(문자열)
String str = "asdf";
str.contains("sd")  	-> 		true

문자열 <-> char[]

  • String to char[] : .toCharArray()
String str = "string";
char[] arr = str.toCharArray();
  • char[] to String : String.valueOf()
char[] arr = {'s', 't', 'r'};
String str = String.valueOf(arr);

문자열 <-> Int

  • String to Int : Integer.parseInt()
String str = "123";
int num = Integer.parseInt(str);
  • Int to String : Integer.toString()
int num = 123;
String str = Integer.toString(num);

Character <-> 문자열

  • Character to String : Character.toString()
Character c = 'a';
String str = Character.toString(c);		//"a"
  • String to Character : String.charAt()
String str = "abc";
Character c = str.charAt(1);		//'b'

Character이 숫자인지 확인

Character.isDigit(char c)

Character c = '91';
Character.isDigit(c);			//true

Character 대소문자 변환

  • Character.toUpperCase(문자) : 소문자 -> 대문자
Char c = "a"
c = Character.toUpperCase(c); //"A"
  • Character.toLowerCase(문자) : 대문자 -> 소문자
Char c = "A"
c = Character.toUpperCase(c); //"a"

startsWith / endWith

  • str1.startsWith(str2) : str1이 str2로 시작하는지 여부 검사
"자바스크립트".startsWith("자바");		   // true
  • str1.endsWith(str2) : str1이 str2로 끝나는지 여부 검사
"자바스크립트".endsWith("스크립트");		// true

StringBuilder

문자열 뒤집기

reverse()

String original = "str";
String reversed = new StringBuilder(original).reverse().toString();

특정 위치 문자 반환

charAt(인덱스)

StringBuilder sb = new StringBuilder("str").charAt(0);	// s

특정 위치 문자 지우기

deleteCharAt(인덱스)

StringBuilder sb = new StringBuilder("str").deleteCharAt(1);	// sr

문자열 정렬

문자열 길이로 정렬하는거아님.

String[] arr = {"a", "c", "bcd", "ab"};

Arrays.sort(arr);

for(String str : arr){
	System.out.println(str);
}

위 코드에서 arr의 정렬 결과는 어떨까? a c ab bcd일까?

결과 :
아니다. 기본적으로 알파벳 순으로 정렬한다.

  • 길이 순으로 정렬하려면 다음과 같이 커스텀하면 된다.
String[] arr = {"a", "c", "bcd", "ab"};

Arrays.sort(arr, new Comparator<String>(){
	@Override
	public int compare(String o1, String o2){
		return o1.length() - o2.length();
	}
});

for(String str : arr){
	System.out.println(str);
}

결과 :

  • 길이 순으로 정렬하고, 같은 길이는 알파벳 순으로 정렬하기
String[] arr = {"c", "a", "bcd", "ab"};

Arrays.sort(arr, new Comparator<String>(){
	@Override
    public int compare(String o1, String o2){
    	if(o1.length() == o2.length()){
        	return o1.compareTo(o2);
        }
        return o1.length() - o2.length();
    }
});

for(String str : arr){
    System.out.println(str);
}

결과 :

profile
Record What I Learned

0개의 댓글

관련 채용 정보