길이가 알 수없는 문자열이 있습니다.
"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);
}