본문 바로가기

알고리즘

[C++/JAVA] 문자열 정리

1.  C++

 

먼저 C++에서 문자열을 다루기 위해서는 헤더를 추가해주어야 한다.

 

먼저 string 클래스를 사용하려면 string 헤더를 포함해야합니다.

iostream 헤더를 사용하시는 분이라면 이 안에 string 헤더가 포함되어 있으니 둘 중 하나만 포함하셔도 무방하다.

iostream 헤더만 있으면 string 헤더를 따로 선언 할 필요가 없다.

 

 

 

** 활용법

 

문자열을 배열처럼 []로 접근하는 것이 가능하고, at으로도 사용이 가능하다. front() 는 문자열의 첫번째 값을 리턴해주는 함수이고 back()은 문자열의 마지막 값을 리턴해주는 함수이다.

 

자바와 동일하게 문자열의 길이는 length()로 사용하며 , size()도 c++ 에서는 지원한다. 그리고 capacity() 함수는 문자열에 할당된 메모르 크기를 반환한다.

 

 

 

 

 

예외처리할때

 

그리고 문자열이 비었는지 확인은 length(), size() 가 0이냐 또는 empty() 함수로 true, false로 체크 가능하다.

 

 

 

 

2. JAVA

2-1) 문자열 연결

 

C++과 다르게 클래스이므로 String 대문자로 표기합니다.

문자열 연결은 + 기호를 사용하여 연결할 수도 있고 text.append("")로 선언해서 문자열은 연결할 수 있습니다.

+로 하는 것보다 append를 사용하는 것이 많은 문자열 처리하는데 있어서는 효율이 좋다고 합니다.

 

StringBuffer와 StringBuilder 객체의 차이점은 StringBuffer 객체의 메소드는 synchronized 되어 있어서 다중 쓰레드에서 안전하고, StringBuilder는 synchronized 되어 있지 않아서 다중 쓰레드 환경에서는 사용할 수 없지만 싱글 쓰레드 환경에서 동기화 오버헤드가 없으므로 더 빠르게 동작합니다. 그래서 대부분의 경우 StringBuilder를 사용합니다.

<출처>

https://offbyone.tistory.com/401

 

자바 문법 - 문자열(String 객체) 다루기

자바 문자열은 객체이고 문자열 리터를은 큰 따옴표로 묶어 표시합니다. String text = "추석에 배를 먹습니다."; 문자열 리터럴도 객체이므로 바로 메소드를 호출할 수 있습니다. int length = "추석에

offbyone.tistory.com

 

2-2) 문자열 비교

String 객체를 비교할 때는 equals() 메소드를 사용합니다. 기본 타입이 같은지 비교할때 사용되는 == 연산자를 사용하여 객체를 비교하게 되면 객체가 존재하는 메모리상의 주소가 같은지를 비교하게 되어서 잘못된 결과를 보게 될 것입니다. 객체인 String 을 비교할 때는 equals() 메소드를 사용합니다.

문자열을 특정 문자열 리터럴과 비교할 경우가 있습니다. 이 경우 "".equals() 처럼 비교하고자 하는 리터럴의 메소도를 사용하는것이 안전합니다.

문자열을 사전순으로 정렬했을때의 우선 순위를 비교하려면 compareTo() 메소드를 사용합니다.

 

 

 

** 자주 사용하는 문자열 메소드 정리

 

- char charAt(int index)

  지정된 인덱스의 한 문자를 반환합니다.

 

- int compareTo(String anotherString)

  두 문자열의 사전적 우선 순위 비교 입니다.

 

- int compareToIgnoreCase(String str)

  대소문자를 구분하지 않는 사전적 비교 입니다.

 

- boolean contains(CharSequence s)

  문자열을 포함하고 있는지 확인합니다.

 

- boolean endsWith(String suffix)

  문자열의 끝이 인자로 주어진 문자열인지 확인합니다.

 

- boolean equals(Object anObject)

  같은 내용의 문자열인지 비교합니다.

 

- boolean equalsIgnoreCase(String anotherString)

  대소문자를 구분하지 않고 비교합니다.

 

- byte[] getBytes()

  플랫폼 기본 캐릭터셋으로 인코딩된 바이트 배열을 링크합니다.

 

- byte[] getBytes(String charsetName)

  인자로 주어인 캐릭터 셋으로 인코딩된 바이트 배열을 반환합니다. 캐릭터셋을 변환하기 위해서 주로 사용되어 집니다.

 

- int indexOf(int ch)

  인자로 주어진 문자가 있는 위치를 반환합니다. 없으면 음수를 반환합니다.

 

- boolean isEmpty()

  빈문자열 인지 확인합니다.

 

- int lastIndexOf(int ch)

  인자로 주어진 문자가 마지막으로 나타난 위치를 반환합니다. 없으면 음수를 반환합니다.

 

- int length()

  문자열의 길이를 반환합니다.

 

- boolean matches(String regex)

  인자로 주어진 정규식에 매치되는지 확인합니다.

 

- String replace(char oldChar, char newChar)

  문자열에서 첫번째 인자의 문자를 두번째 인자의 문자로 바꿉니다.

 

- String replace(CharSequence target, CharSequence replacement)

  문자열을 바꿉니다.

 

- String replaceAll(String regex, String replacement)

  정규식을 사용하여 매치되는 문자열을 바꿉니다.

 

- String[] split(String regex)

  정규식에 매치되는 부분을 구분자로 문자열을 분할 합니다.

 

- String[] split(String regex, int limit)

  문자열 분할시 두번째 인자로 마지막 빈 요소 처리 및 분할할 갯수를 지정합니다.

 

- boolean startsWith(String prefix)

  인자로 주어진 문자열로 시작하는지 확인합니다.

 

- String substring(int beginIndex)

  문자열에서 인자로 주어인 인덱스 이후의 문자열을 추출합니다.

 

- String substring(int beginIndex, int endIndex)

  인자로 주어진 인덱스 사이의 문자열을 반환합니다.

 

- String toLowerCase()

  소문자로 변경합니다.

 

- String toUpperCase()

  대문자로 변경합니다.

 

- String trim()

  문자열 앞, 뒤의 whitespace를 제거합니다.

 

- static String valueOf(int i)

  인자로 주어진 타를 타입의 데이터를 문자열로 변경하는 정적 메소드 입니다. 모든 원시 타입에 대해 오버로딩된 메소드가 있습니다