728x170
해당 글에서는 문자열에서 특정 문자를 추출하여 문자 개수를 구하는 방법에 대해서 확인해 봅니다.
1) Stream을 이용한 방식: filter().count()
1. 해당 메서드 관련 문법
1. chars() 문법
💡 chars() 란
- CharSequence를 얻기 위하여 Stream을 반환하는 메서드를 의미합니다.
매개변수 | 데이터 타입 | 설명 |
void | - | 매개변수가 존재하지 않으며 결과 리턴타입으로 Stream 객체 값을 반환합니다. |
2. filter() 문법
💡 filter() 란?
- Collection 인터페이스를 확장한 List, Set 등의 컬렉션 타입에서 원하는 조건에 맞는 요소들만 걸러내는 기능을 제공하는 메서드를 의미합니다.
매개변수 | 데이터 타입 | 설명 |
Predicate<T> | Stream<T> | 요소를 걸러낼 조건을 지정하는 Predicate 객체. |
3. count() 문법
💡 count() 란?
- Stream 인터페이스에서 제공되며 해당 스트림 요소의 수를 반환합니다. 이 메서드는 중간 연산자로 사용되며 최종 연산자를 호출하기 전에 호출되어야 합니다.
매개변수 | 데이터 타입 | 설명 |
void | - | 매개변수가 존재하지 않으며 결과 리턴 타입으로 long 타입을 반환합니다. |
[참고] Stream의 중간연산과 최종연산에 대해 관심이 있으시면 아래 링크를 참고하시면 도움이 됩니다.
[Java] Stream API -2 이해하기: Stream 중간연산
해당 글의 목적은 Stream API를 이해하고 예제를 통한 이해를 돕기 위해 작성한 글입니다. 주된 내용은 이전에 작성한 Stream 생성을 기반으로 Stream의 중간연산인 조작과 관련된 메서드에 대해서 이
adjh54.tistory.com
[Java] Stream API -3 이해하기: Stream 최종연산
해당 글의 목적은 Stream API를 이해하고 예제를 통한 이해를 돕기 위해 작성한 글입니다. 주된 내용은 이전에 작성한 Stream 생성을 기반으로 Stream의 중간연산인 조작을 한뒤에 최종연산으로 값을
adjh54.tistory.com
2. chars().filter()을 이용한 예시
💡 해당 예시는 문자열 중에 “0”의 값을 찾아서 개수를 반환해 주는 예시입니다.
String s = "110010101001";
nt findZeroCnt1 = (int) s1.chars().filter(i -> String.valueOf((char) i).equals("0")).count(); // 8
[ 더 알아보기 ]
💡 아래의 코드는 왜 값이 0이 나올까?
- “0” 대신 “48”의 값을 찾기 때문에 그렇습니다. 아래와 같은 경우는 Stream을 이용하여 문자열을 분리했을 때 각 문자의 ASCII 코드 값을 반환하기 때문입니다.
String s = "110010101001";
int findZeroCnt = (int) s.chars().filter(i -> String.valueOf(i).equals("0")).count(); // 0
[ 더 알아보기 ]
💡 문자열 내에서 소문자나 대문자를 찾아서 개수를 구하는 방법
String str2 = "Hello World";
// 소문자만 찾아서 갯수를 구하는 방법
long findLowerCase = str2.chars()
.filter(Character::isLowerCase)
.count(); // 8
// 대문자만 찾아서 갯수를 구하는 방법
long findUpperCase = str2.chars()
.filter(Character::isUpperCase)
.count(); // 2
2) for문 + charAt()을 이용한 방식 : charAt()
1. charAt() 문법
💡 charAt() 란?
- 문자열에서 지정된 인덱스에 있는 문자를 반환하는 데 사용됩니다. 즉, 문자열에서 특정 위치의 문자를 찾을 때 사용할 수 있습니다.
public char charAt(int index)
매개 변수 | 데이터 타입 | 설명 |
index | int | 주어진 인덱스에 있는 문자를 반환합니다. 인덱스는 0부터 시작합니다. |
2. charAt()을 이용한 예시
💡 해당 예시는 문자열 중에 “0”의 값을 찾아서 개수를 반환해 주는 예시입니다.
String s = "110010101001";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == "0".charAt(0)) removeZeroCnt++;
}
3) for ~ each문 + split()을 이용한 방식 : split()
1. split() 문법
💡 split()이란?
- 문자열을 분할(split)하려면 split() 메서드를 사용합니다. 이 메서드는 문자열을 지정된 구분자(delimiter)를 기준으로 분리한 문자열 배열을 반환합니다.
public String[] split(String regex, int limit)
매개변수 | 데이터 타입 | 설명 |
regex | String | 분리할 구분자. 문자열 또는 정규식으로 지정할 수 있습니다. |
limit | int | 분할할 문자열의 최대 개수. 생략하면 모든 문자열을 분할합니다. |
2. split()을 이용한 예시
💡 해당 예시는 문자열 중에 “0”의 값을 찾아서 개수를 반환해주는 예시입니다.
String s = "110010101001";
for (String item : s.split("")) {
if (Integer.parseInt(item) == 0) removeZeroCnt++;
}
4) replace를 이용한 방식 : replace
1. replace() 문법
💡 replace() 란?
- Java에서 문자열을 처리할 때, replace() 메서드를 사용하여 특정 문자열을 다른 문자열로 바꿀 수 있습니다. 이 메서드는 String 클래스에 포함되어 있으며, 기존 문자열을 변경하지 않고 새로운 문자열을 반환합니다.
public String[] replace(char oldChar, char newChar)
파라미터 | 데이터 타입 | 설명 |
oldChar | char | 바꿀 문자열 |
newChar | char | 대체할 문자열 |
2. replace()를 이용한 예시
💡 해당 예시는 문자열 중에 “0”의 값을 찾아서 개수를 반환해 주는 예시입니다.
String s = "110010101001";
removeZeroCnt += s.length() - s.replace("0", "").length();
오늘도 감사합니다. 😀
그리드형
'Java > Short 개발' 카테고리의 다른 글
[Java/Short] 배열/리스트 중복제거 방법 : 전체, 인접한 요소 중복 제거 (0) | 2023.05.01 |
---|---|
[Java/Short] 문자열 <-> Date 타입 간의 변환 방법 : + Date 연산 (0) | 2023.04.29 |
[Java/Short] 배열에서 순차적으로 숫자 값 채우는 방법: for, setAll, rangeClose, range (0) | 2023.04.28 |
[Java/Short] 문자열 배열 <-> 정수 배열 변환 방법 (0) | 2023.03.29 |
[Java/Short] 배열/리스트 값 제거 방법 : 요소 첫번째/마지막 값 제거, 특정 값 제거 (0) | 2023.03.05 |