[java] 쉼표로 구분 된 문자열을 나누는 방법?

길이가 알 수없는 문자열이 있습니다.

"dog, cat, bear, elephant, ..., giraffe"

각 단어를 ArrayList의 요소가 될 수 있도록이 문자열을 쉼표로 나누는 가장 좋은 방법은 무엇입니까?

예를 들어

List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.



답변

당신은 이것을 할 수 있습니다 :

String str = "...";
List<String> elephantList = Arrays.asList(str.split(","));

기본적 .split()으로이 방법은 전달하는 구분 기호에 따라 문자열을 분할하고 문자열 배열을 반환합니다.

그러나 배열이 아닌 문자열 목록 뒤에있는 것처럼 보이므로 Arrays.asList()유틸리티 를 사용하여 배열을 목록으로 바꿔야 합니다. 참고로 다음과 같이 할 수도 있습니다.

String str = "...";
ArrayList<String> elephantList = new ArrayList<>(Arrays.asList(str.split(","));

그러나 실제 실제 구현보다는 인터페이스에 프로그래밍하는 것이 일반적으로 더 좋습니다. 따라서 첫 번째 옵션을 권장합니다.


답변

음, 당신은 분할 하고 싶 습니까?

String animals = "dog, cat, bear, elephant, giraffe";

String[] animalsArray = animals.split(",");

항목 주위에 공백을 추가로 제거하려면 다음을 수행하십시오.

String[] animalsArray = animals.split("\\s*,\\s*");


답변

분할하고 배열을 만든 다음 배열처럼 액세스 할 수 있습니다

String names = "prappo,prince";
String[] namesList = names.split(",");

당신은 같은 액세스 할 수 있습니다

String name1 = namesList [0];
String name2 = namesList [1];

또는 루프를 사용하여

for(String name : namesList){
System.out.println(name);
}

그것이 당신을 도울 것입니다 바랍니다.


답변

약간의 개선 : 위의 솔루션은 실제 문자열에서 선행 또는 후행 공백을 제거하지 않습니다. 스플릿을 호출하기 전에 트림을 호출하는 것이 좋습니다. 이 대신에

 String[] animalsArray = animals.split("\\s*,\\s*");

사용하다

 String[] animalsArray = animals.trim().split("\\s*,\\s*");


답변

먼저 이런 식으로 이름을 나눌 수 있습니다

String animals = "dog, cat, bear, elephant,giraffe";

String animals_list[] = animals.split(",");

동물에게 접근하기

String animal1 = animals_list[0];
String animal2 = animals_list[1];
String animal3 = animals_list[2];
String animal4 = animals_list[3];

또한 동물 이름 주위의 공백과 쉼표를 제거하고 싶습니다.

String animals_list[] = animals.split("\\s*,\\s*");


답변

완전성을 위해 Guava 라이브러리를 사용하면 다음을 수행 할 수 있습니다. Splitter.on(",").split(“dog,cat,fox”)

다른 예시:

String animals = "dog,cat, bear,elephant , giraffe ,  zebra  ,walrus";
List<String> l = Lists.newArrayList(Splitter.on(",").trimResults().split(animals));
// -> [dog, cat, bear, elephant, giraffe, zebra, walrus]

Splitter.split()Iterable을 리턴하므로 List가 필요한 경우 Lists.newArrayList()위와 같이 랩핑하십시오 . 그렇지 않으면 Iterable을 사용하십시오.

for (String animal : Splitter.on(",").trimResults().split(animals)) {
    // ...
}

참고 어떻게 trimResults()핸들 모든는하지 않고 요구를 트리밍 코너 케이스에 대한 정규 표현식에 조정할 와 마찬가지로 String.split().

프로젝트에서 이미 구아바를 사용하는 경우 이것이 선호하는 솔루션입니다. 자세한 구성 옵션 은 Guava 사용 설명서 또는 javadocs의 스플리터 설명서를 참조하십시오 .


답변

이것으로 나를 위해 노력할 수 있습니까?

 sg = sg.replaceAll(", $", "");

그렇지 않으면

if (sg.endsWith(",")) {
                    sg = sg.substring(0, sg.length() - 1);
                }