반응형
반응형
해당 글의 목적은 주요 문자열 조작함수를 이해하고 예제를 통한 이해를 돕기 위해 작성한 글입니다. 해당 글에서는 모든 함수에 대해서는 포함하고 있지 않으며 자주 사용되는 함수 위주로 작성하였습니다. (상시 업데이트 예정입니다)
1) 문자열 조작 함수 요약
💡 문자열 조작에 사용되는 함수들의 목록입니다.
[참고] W3Schools의 함수들을 참고하여서 재 구성하였습니다.
문자열 함수 | 설명 | 참고 |
equal | 해당 함수는 문자열 간의 “대소문자를 구분”하여서 비교하여 진위형(true/false)값으로 반환을 해주는 함수입니다. | 단, String과 StringBuffer간의 비교는 불가능합니다. |
cotentEquals | 해당 함수는 문자열 간의 “대소문자를 구분”하여 비교하여 진위형(true/false)값으로 반환을 해주는 함수입니다. | String과 StringBuffer간의 비교가 가능합니다. |
equalsIgnoreCase | 해당 함수는 문자열 간의 “대소문자를 구분하지 않고“ 비교하여 진위형(true/false)값으로 반환을 해주는 함수입니다. | |
compareTo | 해당 함수는 문자열 간의 비교와 숫자 간의 비교를 통해서 int 값으로 반환을 해주는 함수입니다. | - 문자열 간의 비교 일 경우 동일한 문자열의 경우는 0의 값을 반환해주며, 이외에는 기준이 되는 문자열과 비교가 되는 문자열의 길이(lenght) 차이를 반환해줍니다. 또한 해당 차이가 불가능 하는 경우에는 비교가 불가능한 문자열의 첫번째 ASCII 코드 값 기준으로 반환합니다. |
split / Pattern.complie / toCharArray |
해당 함수는 문자열을 문자 배열로 반환합니다. | |
chartAt / (char) | 해당 함수는 문자열을 ASCII코드로 변환하거나 역으로 ASCII코드에서 문자열로 변환하는 함수입니다. | |
split | 해당 함수는 문자열을 특정 기준으로 구분을 지어서 배열로 반환을 해주는 함수입니다. | |
substring | 해당 함수는 문자열을 특정 인덱스 범위(n ~ m)내로 지정하여서 원하는 범위의 문자열을 반환을 해주는 함수입니다. | 단, substring(1)인 경우는 첫번째 값을 제외한 뒤에 문자을 가져옵니다 |
repeat | 해당 함수는 문자열을 n번 반복하여 반환을 받고자 할때 사용하는 함수입니다. | |
replace | 해당 함수는 문자열 내에 포함이 되어있는 문자를 제거 혹은 대체 하기 위해 문자열을 이용하여 찾고 반환을 해주는 함수입니다. | 문자열을 이용한 조회 및 변경 |
replaceAll | 해당 함수는 문자열 내에 포함이 되어있는 문자를 제거 혹은 대체 하기 위해 정규식을 이용하여 찾고 반환을 해주는 함수입니다. | 정규식을 이용한 조회 및 변경 |
concat / + 기호 / append |
해당 함수는 문자열을 기준으로 다른 문자열을 합쳐주고 반환을 해주는 함수 입니다. | |
contains | 해당 함수는 문자열 내에 일치하는 문자열을 확인하기 위해 문자열을 이용하여 찾고 존재여부를 반환해주는 함수입니다. | 문자열을 이용한 조회 |
matches | 해당 함수는 문자열 내에 일치하는 문자열을 확인하기 위해 정규식을 이용하여 찾고 존재여부를 반환해주는 함수입니다. | 정규식을 이용한 조회 |
toUpperCase | 해당 함수는 알파벳 문자열을 대문자로 변환하여 반환해주는 함수입니다. | |
toLowerCase | 해당 함수는 알파벳 문자열을 소문자로 변환하여 반환해주는 함수입니다. | |
trim | 해당 함수는 왼쪽과 오른쪽에 있는 공백을 제거하여 반환해주는 함수입니다. | |
format | 해당 함수는 왼쪽 혹은 오른쪽에 문자열을 채워 반환해주는 함수입니다. | |
startsWith | 해당 함수는 문자열이 지정한 접두사와 같은지에 대해 반환해주는 함수입니다 | |
endsWith | 해당 함수는 문자열이 지정한 접미사와 같으지에 대해 반환해주는 함수입니다. | |
join | 해당 함수는 배열을 하나의 문자열로 경합하여 반환해주는 함수입니다. | |
valueOf | 해당 함수는 객체를 문자열로 변환하는데 사용하는 함수입니다. | |
copyValueOf | 해당 함수는 문자열의 일부분을 복사하여 새로운 문자열을 생성하는데 사용하는 함수입니다. |
2) 문자열 조작 함수 상세
1. equals / cotentEquals/ equalsIgnoreCase / compareTo: 문자열 간의 비교를 위한 함수
💡 equlas()
- 문자열 간의 “대소문자를 구분”하여서 비교하여 진위형(true/false) 값으로 반환을 해주는 함수입니다.
- 단, 해당 함수는 String과 StringBuffer와의 비교가 불가능합니다.
String str1 = "hellow";
String str2 = "HELLOW";
String str3 = "Hellow";
String str4 = "he";
String str5 = "hellow";
StringBuffer sb1 = new StringBuffer("hellow");
Boolean isEquals1 = str1.equals(str2); // 소문자 조합과 대문자 조합간의 동일한 단어 비교 = false
Boolean isEquals2 = str1.equals(str3); // 소문자 조합과 일부 대문자 조합간의 동일한 단어 비교 = false
Boolean isEquals3 = str1.equals(str5); // 소문자 조합과 소문자 조합의 동일한 단어 비교 = true
Boolean isEquals4 = str1.equals(sb1); // 동일한 두 단어이지만 String과 StringBuffer와의 비교 = false
💡 contentEquals()
- 문자열 간의 “대소문자를 구분”하여서 비교하여 진위형(true/false) 값으로 반환을 해주는 함수입니다.
- 단, 해당 함수는 equals와 비교하였을 경우 String과 StringBuffer와의 비교가 가능합니다.
String str1 = "hellow";
String str2 = "HELLOW";
String str3 = "Hellow";
String str4 = "he";
String str5 = "hellow";
StringBuffer sb1 = new StringBuffer("hellow");
Boolean isContentEquals1 = str1.contentEquals(str2); // 소문자 조합과 대문자 조합간의 동일한 단어 비교 = false
Boolean isContentEquals2 = str1.contentEquals(str3); // 소문자 조합과 대문자 조합간의 동일한 단어 비교 = false
Boolean isContentEquals3 = str1.contentEquals(str5); // 소문자 조합과 소문자 조합의 동일한 단어 비교 = true
Boolean isContentEquals4 = str1.contentEquals(sb1); // 동일한 두 단어이지만 String과 StringBuffer와의 비교 = true
💡 equalsIgnoreCase()
- 문자열 간의 “대소문자를 구분하지 않고 “ 비교하여서 진위형(true/false) 값으로 반환을 해주는 함수입니다.
String str1 = "hellow";
String str2 = "HELLOW";
String str3 = "Hellow";
Boolean isEqualsIgnoreCase1 = str1.equalsIgnoreCase(str2); // 소문자 조합과 대문자 조합간의 동일한 단어 비교 = true
Boolean isEqualsIgnoreCase2 = str1.equalsIgnoreCase(str3); // 소문자 조합과 일부 대문자 조합간의 동일한 단어 비교 = true
💡 compareTo()
- 문자열 간의 비교와 숫자 간의 비교를 통해서 int 값으로 반환을 해주는 함수입니다.
- 문자열 간의 비교 일 경우 동일한 문자열의 경우는 0의 값을 반환해 주며, 이외에는 기준이 되는 문자열과 비교가 되는 문자열의 길이(length) 차이값을 반환해 줍니다. 또한 해당 차이가 불가능하는 경우에는 비교가 불가능한 문자열의 첫 번째 ASCII 코드 값 기준으로 반환합니다.
String str1 = "hellow";
String str2 = "HELLOW";
String str3 = "Hellow";
String str4 = "he";
String str5 = "hellow";
int compareStr1 = str1.compareTo(str2); // "hellow" - "HELLOW" = ASCII코드 비교 : h(72) - H(104) = 32
int compareStr2 = str1.compareTo(str3); // "hellow" - "Hellow" = ASCII코드 비교 : h(72) - H
int compareStr3 = str1.compareTo(str4); // "hellow"(6) - he(2) = 문자열 길이 비교 : 4 반환
int compareStr4 = str1.compareTo(str5); // "hellow" - "hellow" = 동일한 문자 : 0 반환
💡 [참고] 비교 함수들 종합 비교
함수 | 대소문자 구분 가능여부 |
문자열과 StringBuffer와의 비교 가능 여부 |
반환값(return) |
equals | O | X | boolean |
cotentEquals | O | O | boolean |
equalsIgnoreCase | X | X | boolean |
compareTo | X | X | int (동일할때 0, 이외에는 다른 값 반환) |
2. String.split / pattern.complie / toCharArray: 문자열을 배열로 전환하는 함수
💡 해당 함수는 문자열을 문자 배열로 반환합니다.
String helloStr = "Hello";
/*
* Split() 을 이용한 문자열을 쪼개 배열로 변환
*/
String[] splitArr1 = helloStr.split(""); // ["H", "e", "l", "l", "o"]
/*
* Pattern()을 이용한 문자열을 쪼개 배열로 변환
*/
Pattern pattern = Pattern.compile("");
String[] splitArr2 = pattern.split(helloStr); // ["H", "e", "l", "l", "o"]
/*
* ⭐️toCharArray() 을 이용한 문자열을 쪼개 배열로 변환
*/
char[] splitArr3 = helloStr.toCharArray();
/*
* 반복문을 이용한 문자열을 쪼개 배열로 변환
*/
char[] splitArr4 = new char[helloStr.length()];
for (int i = 0; i < splitArr4.length; i++) {
splitArr4[i] = helloStr.charAt(i);
}
3. charAt() / (char) : ASCII 코드를 기반으로 값, 값을 기반으로 ASCII 코드를 반환하는 함수
💡 charAt()
- 문자열(charAt)을 ASCII코드로 변환하거나 역으로 ASCII코드에서 문자열로 변환하는 함수입니다.
💡 (char)
- ASCII 코드 번호를 기반으로 문자열을 반환하거나 문자열을 기반으로 ASCII 코드 번호를 반환하는 함수입니다.
String helloStr = "Hello";
/*
* 1. String to ASCII Code
*/
// [CASE1]
// String -> Array String
String[] helloStrArr = helloStr.split("");
for (int i = 0; i < helloStrArr.length; i++) {
// String -> Char -> Num
int helloItemNum = helloStr.charAt(i);
}
// [CASE2]
byte[] bytes = helloStr.getBytes(StandardCharsets.US_ASCII);
for (byte item : bytes) {
log.debug("문자열 배열로 전환" + item);
}
/*
* 2. ASCII Code to String
*/
int asciiNumArr[] = {72, 101, 108, 108, 111}; //
char[] charArr = new char[asciiNumArr.length];
// int to String
for (int i = 0; i < asciiNumArr.length; i++) {
charArr[i] = (char) asciiNumArr[i];
}
💡 [참고] 자주 사용이 되는 ASCII 코드 범위
구분 | ASCII Code 범위 | 개발 코드 범위 |
대문자 | 65 ~ 90 | x >= 65 & x <= 90 |
소문자 | 97 ~ 122 | x >= 97 & x <= 122 |
숫자 | 48 ~ 57 | x >= 48 & x <= 57 |
알파벳 범위 | 65 ~ 90 && 97 ~ 122 | (x >= 65 & x <= 90) & (x >= 97 & x <= 122) |
4. split :특정 문자이나 문자열 기준으로 문자열 쪼개기 && 문자열을 배열로 변환 함수
💡 split()
- 문자열을 특정 기준으로 구분을 지어서 배열로 반환을 해주는 함수입니다.
String str = "adjh54, ckask123, hihi, hoho";
// String to String[]
String[] strArr = str.split(",");
// 공백 제거
for (String splitItem : strArr) {
splitItem = splitItem.trim();
}
log.debug(Arrays.toString(strArr)); // "strArr": "[adjh54, ckask123, hihi, hoho]"
5. substring : 인덱스 기준 문자열 쪼개기 함수
💡 substring()
- 문자열을 특정 인덱스 범위(n ~ m) 내로 지정하여서 원하는 범위의 문자열을 반환을 해주는 함수입니다.
- string.substring(시작 인덱스, 종료 인덱스) string의 index를 기준으로 문자열을 쪼갤 때 사용합니다. (* 해당 문자열은 공백을 포함한 인덱스입니다)
- 단 string.substring(1)로도 사용이 가능합니다 이렇게 되면 첫 번째 문자를 제외하고 나머지 문자열을 가져옵니다
String text = "동해물과 백두산이 마르고 닳도록";
String sub1 = text.substring(0, 4)); // "동해물과"
String sub2 = text.substring(5, 9)); // "백두산이"
String sub3 = text.substring(10, 13)); // "마르고"
String sub4 = text.substring(14, 17)); // "닳도록"
6. repeate : 문자열 반복 수행 함수
💡 repeate()
- 문자열을 n번 반복하여 반환을 받고자 할 때 사용하는 함수입니다.
String text = "반복합니다. ";
String repeatText = text.repeat(5); // "반복합니다. 반복합니다. 반복합니다. 반복합니다. 반복합니다. "
7. replace/replaceAll : 문자열 포함 문자 제외 시킨 값 반환 함수
💡 해당 함수는 문자열 내에 포함이 되어있는 문자를 제거 혹은 대체하기 위한 함수입니다.
💡 replace()
- 해당 함수는 문자열 내에 포함이 되어있는 문자를 제거 혹은 대체하기 위해 "문자열"을 이용하여 찾고 반환을 해주는 함수입니다.
💡 replaceAll()
- 해당 함수는 문자열 내에 포함이 되어있는 문자를 제거 혹은 대체하기 위해 “정규식”을 이용하여 찾고 반환을 해주는 함수입니다.
String str1 = "A.B.C";
String strReplace = str1.replace(".", ""); // ABC
String strReplaceAll = str1.replaceAll("\\\\.", ""); // ABC
String strReplaceFirst = str1.replaceFirst(".", ""); // .B.C
8. concat : 문자열과 문자열을 합치기 함수
💡 concat()
- 문자열과 문자열을 합칠 때 사용하는 함수입니다.
String text1 = "안녕하세요";
String text2 = "반갑습니다";
String text3 = "오늘도 이렇게 인사를 드립니다.";
/*
* [CASE1] concat() 함수를 이용한 문자열 합치기
*/
String totalText = text1.concat(text2).concat(text3);
/*
* [CASE2] + 기호를 이용하여 문자열 합치기
*/
String totalText2 = text1 + text2 + text3;
/*
* [CASE3] append() 함수를 이용한 문자열 합치기
*/
StringBuffer totalText3 = new StringBuffer();
totalText3.append(text1).append(text2).append(text3);
9. contains/matches : 문자열이 일치하는지에 대해서 문자열 및 정규식을 이용하여 여부 반환 함수
💡 contains()
- 문자열 내에 일치하는 문자열을 확인하기 위해 "문자열"을 이용하여 찾고 존재여부를 반환해 주는 함수입니다.
💡 matches()
- 문자열 내에 일치하는 문자열을 확인하기 위해 "정규식"을 이용하여 찾고 존재여부를 반환해 주는 함수입니다.
// 기준 문자열
String plainStr = "ABBB.B.C.D.E.F.G.H.A";
// 비교 대상 문자열
String matchStr = "D.E.F";
/*
* [CASE1] Contains 함수를 이용하여 문자열 내에 "문자열"을 통하여 포함여부 판단.
*/
boolean isContains = plainStr.contains(matchStr);
if (isContains) log.debug("해당 단어가 포함되어 있습니다.");
else log.debug("해당 단어가 포함되어 있지 않습니다.");
// log: 해당 단어가 포함되어 있습니다.
/*
* [CASE2] Matches 함수를 이용하여 문자열 내에 "정규식"을 통하여 포함여부 판단.
*/
boolean isMatch = plainStr.matches("(.*)D.E.F(.*)");
if (isMatch) log.debug("해당 단어가 포함되어 있습니다.");
else log.debug("해당 단어가 포함되어 있지 않습니다.");
// log: 해당 단어가 포함되어 있습니다.
10. toUpperCase / toLowerCase : 문자열을 대문자 혹은 소문자로 변경 함수
💡 toUpperCase()
- 알파벳 문자열을 대문자로 변환하여 반환해 주는 함수입니다.
💡 toLowerCase()
- 알파벳 문자열을 소문자로 변환하여 반환해 주는 함수입니다.
const lowerStr = "hello";
const upperStr = "HELLO";
console.log(lowerStr.toUpperCase()); // HELLO
console.log(upperStr.toLowerCase()); // hello
11. trim : 문자열 내의 좌우의 공백을 제거해 주는 함수
💡 trim()
- 왼쪽과 오른쪽에 있는 공백을 제거하여 반환해 주는 함수입니다.
String str1 = " 양쪽의 공백을 제거하여 반환하여 줍니다. ";
String trimStr = str1.trim(); // "양쪽의 공백을 제거하여 반환하여 줍니다."
12. format : 문자열의 왼쪽이나 오른쪽에 문자를 추가하는 함수
💡format()
- 왼쪽 혹은 오른쪽에 문자열을 채워 반환해주는 함수입니다.
/*
* "왼쪽"에서부터 "공백" 문자열을 채워넣습니다.
* 1. 해당 예시는 왼쪽에서부터 지정한 문자열을 포함하여 총 5개의 문자열 개수가 만들어지는데 지정한 문자열을 제외한 공백으로 이를 채웁니다.
* 2. 해당 예시에는 공백을 다시 "z"라는 문자열로 바꿉니다.
*/
String lPadStr = "abc";
lPadStr = String.format("%5s", lPadStr).replace(" ", "z"); // zzabc
/*
* "오른쪽"에서부터 "공백" 문자열을 채워넣습니다.
* 1. 해당 예시는 오른쪽에서부터 지정한 문자열을 포함하여 총 5개의 문자열 개수가 만들어지는데 지정한 문자열을 제외한 공백으로 이를 채웁니다.
* 2. 해당 예시에서는 공백을 다시 "z"라는 문자열로 바꿉니다.
*/
String rPadStr = "abc";
rPadStr = String.format("%-5s", rPadStr).replace(" ", "z"); // abczz
/*
* 왼쪽에서부터 0의 값을 채워넣습니다.
* 1. 해당 예시는 왼쪽에서부터 지정한 문자열을 포함하여 총 5개의 문자열 개수가 만들어지는데 지정한 문자열을 제외한 0으로 이를 채웁니다.
* 2. 해당 예시에는 00123 값이 출력이 됩니다.
*/
String lPadIntStr = "123";
lPadIntStr = String.format("%05d", Integer.parseInt(lPadIntStr)); // 00123
int LPadInt = Integer.parseInt(lPadIntStr); // 123
/*
* 오른쪽에서부터 공백 문자열을 채워넣습니다. (* "%-05d"와 같이 숫자에서 뒤에서부터 채우는것은 존재하지 않습니다.)
* 1. 해당 예시는 오른쪽에서부터 지정한 문자열을 포함하여 총 5개의 문자열 개수가 만들어지는데 지정한 문자열을 제외한 공백으로 이를 채웁니다.
* 2. 해당 예시에서는 공백을 다시 "0"라는 문자열로 바꿉니다.
*/
String rPadIntStr = "123";
rPadIntStr = String.format("%-5s", rPadIntStr).replace(" ", "0"); // 12300
int RPadInt = Integer.parseInt(rPadIntStr); // 12300
13. startsWith : 문자열 내에 접두사로 해당 문자열이 있는지 확인하는 함수
💡 startsWith
- 문자열이 지정한 접두사와 같은지에 대해 반환해주는 함수입니다
String str = "Hello, world!";
boolean startsWithHello = str.startsWith("Hello");
boolean startsWithHi = str.startsWith("Hi");
System.out.println(startsWithHello); // 출력: true
System.out.println(startsWithHi); // 출력: false
14. endsWith : 문자열 내에 접미사로 해당 문자열이 있는지 확인하는 함수
💡 endsWith
- 문자열이 지정한 접미사와 같은지에 대해 반환해주는 함수입니다
String[] strs = {"abcaefg", "abcdefg", "abednfg"};
// 1. 배열에서 첫 번째 값을 접미사로 사용합니다(기준)
String suffix = strs[0];
// 2. 나머지 값들을 비교 대상으로 순회합니다.(비교대상)
for (String str : strs) {
// 3. 접미사와 다른 값들을 비교하여 같아질 때까지 반복합니다.
while (!str.endsWith(suffix)) {
// 4. 접미사의 첫 글자를 제거하여 접미사를 재구성합니다.
suffix = suffix.substring(1);
}
}
System.out.println("Common suffix: " + suffix); // Common suffix: fg
15. join : 배열을 하나의 문자열로 만드는 함수
💡 join
- 배열을 하나의 문자열로 만들어서 반환해주는 함수입니다.
String[] strArr = {"apple", "banana", "orange"};
String result = String.join(",", strArr);
System.out.println(result); // 출력 : apple,banana,orange
16. valueOf : 객체를 문자열로 변환해 주는 함수
💡 valueOf
- 객체를 문자열로 변환하는 데 사용하는 함수입니다.
int num = 10;
String str = String.valueOf(num);
System.out.println(str); // 출력 : 10
17. copyValueOf : 객체를 일부분만 복사하여 새로운 문자열로 만드는 함수
💡 copyValueOf
- 문자열의 일부분을 복사하여 새로운 문자열을 생성하는 데 사용하는 함수입니다.
char[] charArr = {'H', 'e', 'l', 'l', 'o'};
String str1 = String.copyValueOf(charArr);
System.out.println(str1); // 출력 : Hello
String str2 = String.copyValueOf(charArr, 1, 3);
System.out.println(str2); // 출력 : ell
오늘도 감사합니다. 😀
반응형
'Java > 공통 모듈' 카테고리의 다른 글
[Java] Stream API -3 이해하기: Stream 최종연산 (0) | 2023.02.14 |
---|---|
[Java] Stream API -2 이해하기: Stream 중간연산 (4) | 2023.02.08 |
[Java] Stream API -1 이해하기: 용어 및 Stream 생성 (4) | 2023.02.05 |
[Java] 배열(Array) 조작 함수 이해하기-1: 기본 구성, Arrays 함수 (0) | 2023.01.30 |
[Java] 숫자(Number) 조작 함수 이해하기 : Math, 진법 변환 (2) | 2023.01.14 |