Java 문자열 분할(split()) 메서드 예제
⚡ 스마트 요약
문자열 분할 Java `split()` 메서드를 사용하면 구분 기호가 일치하는 위치에서 텍스트를 분할하고 분할된 부분을 문자열 배열로 반환합니다. 선택적 `limit` 인수를 사용하면 생성되는 분할 개수를 제한할 수 있으며, 나머지는 그대로 유지됩니다.
Split() 문자열은 무엇입니까? Java?
The split() 이 방법은 파괴할 수 있습니다. 현 특정한 것에 기반하여 Java 문자열 구분자. 대부분의 경우 구분자는 문자열을 나누려는 공백이나 쉼표(,)입니다.
분할() 함수 구문
public String[] split(String regex) public String[] split(String regex, int limit)
⚠️ 반환 유형에 대한 주의 사항: split() 를 반환 String[] 정렬, 하나도 아니야 String결과를 일반 변수에 할당합니다. String 변수 컴파일 시 호환되지 않는 형식 오류가 발생하는데, 이는 초보자들이 이 방법을 사용할 때 가장 흔히 저지르는 실수입니다.
매개 변수
- 정규 표현식: 텍스트 또는 문자열에 적용되는 정규 표현식.
- 한도: 결과 배열에 포함될 수 있는 최대 값의 개수입니다. 이 값이 생략되거나 0인 경우, 정규 표현식과 일치하는 모든 부분 문자열이 반환됩니다.
문자열을 분할하는 방법 Java 구분 기호 포함
아래 예시는 문자열을 분할하는 방법을 보여줍니다. Java 구분 기호를 사용하여.
다음과 같은 문자열 변수가 있다고 가정합니다. strMain 알파, 베타, 감마라는 몇 단어로 이루어져 있습니다. Delta, 시그마 — 모두 쉼표(,)로 구분합니다.
여기서 모든 개별 문자열을 원하는 경우 가능한 가장 좋은 패턴은 쉼표를 기준으로 문자열을 분할하는 것입니다. 따라서 다음과 같이 XNUMX개의 개별 문자열을 얻게 됩니다.
- 알파
- 베타
- 감마
- Delta
- 시그마
문자열 사용 분열 방법 Java 나누어야 할 문자열을 기준으로 구분자를 인수로 제공합니다.
이번에 Java 구분 기호 대소문자로 문자열을 분할하는 경우 구분 기호는 쉼표(,)이고 그 결과는 다음과 같습니다. Java 문자열을 쉼표로 분할하면 배열이 분할됩니다.
class StrSplit{
public static void main(String []args){
String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
String[] arrSplit = strMain.split(", ");
for (int i=0; i < arrSplit.length; i++)
{
System.out.println(arrSplit[i]);
}
}
}
코드의 루프는 각각을 인쇄합니다. Java split 함수 다음에 배열에서 문자열을 분할합니다. Java, 아래 그림과 같이.
예상 출력 :
Alpha Beta Delta Gamma Sigma
예: Java 정규식과 길이를 사용하는 문자열 분할() 메서드
분할 함수 이후에 처음 'n'개의 요소만 필요한 상황을 생각해 보세요. Java하지만 나머지 문자열은 그대로 유지하고 싶습니다. 출력 결과는 다음과 같습니다.
- 알파
- 베타
- Delta, 감마, 시그마
이는 split() 연산에 다른 인수를 함께 전달함으로써 달성할 수 있습니다. Java그리고 필요한 문자열의 최대 개수는 그 정도가 될 것입니다.
다음은 split 메서드의 코드입니다. Java:
class StrSplit2{
public static void main(String []args){
String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
String[] arrSplit_2 = strMain.split(", ", 3);
for (int i=0; i < arrSplit_2.length; i++){
System.out.println(arrSplit_2[i]);
}
}
}
예상 출력 :
Alpha Beta Delta, Gamma, Sigma
제한값이 3이면 정확히 세 개의 요소가 생성됩니다. 처음 두 개의 구분자는 그대로 유지되고, 두 번째 구분자 이후의 모든 내용은 세 번째 요소로 함께 유지됩니다.
문자열을 분할하는 방법 Java 우주별
문자열을 공백으로 분할하는 상황을 생각해 보세요. 다음은 분할된 문자열입니다. Java 변수 이름 strMain 몇 단어로 이루어져 있습니다. 서울 굿 KBBQ에 오신 것을 환영합니다. 저희는 로스앤젤레스 코리아타운 중심에 있는 가족 운영 정육점 Choice Meat Market이 선보이는 프리미엄 한식 BBQ 전문점입니다. Guru99.
public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
for (int i=0; i < arrSplit_3.length; i++){
System.out.println(arrSplit_3[i]);
}
}
}
예상 출력 :
Welcome to Guru99
패턴 \\s 단일 공백 문자와 일치합니다. 사용 \\s+ 단어 사이에 두 개 이상의 공백이 있을 수 있지만, 그렇지 않으면 추가되는 각 공백마다 빈 요소가 생성됩니다.
문자열 분할 시 빈 문자열을 유지하는 방법 Java
한 가지 행동 split() 처음 접하는 거의 모든 사람을 놀라게 하는 것은, 늘어진 빈 줄들이 조용히 버려진다는 점입니다. 분열 "a,b,," 쉼표를 기준으로 하면 기본 제한값인 0 때문에 배열 끝의 빈 필드가 모두 버려지므로 4개가 아닌 2개의 요소가 반환됩니다.
이는 데이터가 위치 정보를 포함할 때, 예를 들어 CSV 행에서 마지막에 누락된 값이 여전히 열을 차지하는 경우에 중요합니다. 이러한 공백이 사라지면 하위 인덱스 전체에 영향을 미칩니다.
통과 부정 제한은 그들을 유지합니다:
String row = "Alpha,Beta,,"; // Default: trailing empty fields removed -> length 2 String[] a = row.split(","); System.out.println(a.length); // prints 2 // Negative limit: every field preserved -> length 4 String[] b = row.split(",", -1); System.out.println(b.length); // prints 4
세 가지 규칙이 모든 경우에 적용됩니다. 한도 제로기본값인 이 옵션은 패턴을 가능한 한 여러 번 적용한 다음 뒤따르는 빈 문자열을 제거합니다. 긍정적인 limit 값은 패턴을 최대 limit - 1번까지 적용하므로, 마지막 요소는 이전 예시에서 limit 값이 3일 때와 마찬가지로 변경되지 않은 나머지 값을 유지합니다. 부정 limit 명령어는 패턴을 가능한 한 여러 번 적용하고, 뒤따르는 빈 필드를 포함하여 모든 빈 필드를 유지합니다.
앞에 빈 문자열이 있는 경우 동작 방식이 다시 달라집니다: 분할 ",a,b" 제한 값과 관계없이 항상 첫 번째 요소가 비어 있게 됩니다. 패턴이 0번째 위치에서 일치하기 때문입니다. 입력값을 다듬거나 결과값을 필터링하여 이를 방지하세요. 정렬 사용하기 전에.
split(), StringTokenizer, Pattern.split() 중 어떤 것을 사용해야 할까요?
Java 문자열을 여러 부분으로 나누는 세 가지 방법을 제공합니다. 각 방법은 허용하는 구분 기호의 종류, 반환 값, 그리고 패턴을 한 번만 컴파일하는지 아니면 호출할 때마다 다시 컴파일하는지에 따라 차이가 있습니다. 특히 루프 안에서 분할이 이루어질 때는 이 부분이 중요합니다.
| 아래 | 문자열.분할() | 스트링토크나이저 | 패턴.split() |
|---|---|---|---|
| 구분 기호 | 정규식 | 개별 문자 집합 | 정규식 |
| 반품 | 끈[] | 열거를 통한 토큰 | 끈[] |
| 패턴 컴파일됨 | 모든 통화에서 | 적용 할 수 없음 | 한 번 사용하고 나서 재사용합니다. |
| 빈 필드를 유지합니다 | 음의 한계값만 있는 경우 | 음의 한계값만 있는 경우 | |
| Status | 추천 | 호환성을 위해 기존 기능을 유지합니다. | 반복 사용 시 권장 |
String.split() 일반적인 일회성 작업에는 작성 시간이 가장 짧고 가독성이 좋기 때문에 적합합니다. 사전 컴파일하세요. Pattern.compile(",").split(text) 반복문 안에서 분할할 경우, 정규 표현식이 매 반복마다 컴파일되는 것이 아니라 한 번만 컴파일되므로 피해야 합니다. StringTokenizer 새 코드에서는 해당 부분이 남아 있지만, 하위 호환성을 위해서만 남아 있습니다.
공통의 Java split() 함수 오류 및 해결 방법
거의 모든 문제점 split() trac이 오류는 다음 두 가지 원인 중 하나로 발생합니다. 인수가 리터럴 문자열이 아닌 정규 표현식이거나, 위에서 설명한 제한 규칙이 예기치 않게 필드를 버리는 경우입니다. 아래의 각 오류는 증상과 해결 방법을 명시합니다.
- 점을 기준으로 분할하면 빈 배열이 반환됩니다.
"1.2.3".split(".")마침표(.)는 정규 표현식 와일드카드이므로 모든 문자와 일치합니다. 이를 이스케이프 처리하려면 다음과 같이 하십시오.split("\\."). - 파이프를 분배할 때 동작이 이상합니다: 파이프(|)는 정규 표현식에서 교대를 의미합니다. 이를 이스케이프 처리하려면 다음과 같이 하십시오.
split("\\|"). - 호환되지 않는 형식 오류: 결과는 다음과 같이 할당되었습니다.
String변수를 다음과 같이 선언하세요.String[]. - 첫 번째 요소가 비어 있는 예상치 못한 상황입니다: 구분자가 입력값의 시작 부분에 나타납니다. 먼저 문자열의 끝 부분을 잘라내십시오.
- 마지막 부분에 누락된 값이 있습니다. 기본 제한에 따라 뒤따르는 빈 필드는 무시되었습니다. 통과
-1두 번째 주장은 다음과 같습니다. - NullPointerException:
split()null 참조에 대해 호출되었습니다. 메서드가 null을 처리할 수 없으므로 분할하기 전에 null인지 확인하십시오.


