쉼표로 구분된 문자열을 분할하려면 어떻게 해야 합니까?
다음과 같은 알 수 없는 길이의 문자열이 있습니다.
"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(","));
기본적으로 메서드는 전달 중인 (이 경우) 딜리미터에 따라 문자열을 분할하고 문자열 배열을 반환합니다.
단, 배열이 아닌 문자열 목록을 원하는 것 같기 때문에 유틸리티를 사용하여 배열이 목록으로 변환되어야 합니다.참고인으로서 다음과 같은 작업을 수행할 수도 있습니다.
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의 선행 또는 후행 공백을 제거하지 않습니다.스플릿을 부르기 전에 트림을 부르는 것이 좋습니다.이런 거 말고
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()는 Itable을한 경우 .Lists.newArrayList()'Itable'로 예를 들면 'Itable'로 해요.
for (String animal : Splitter.on(",").trimResults().split(animals)) {
// ...
}
note에 주의해 주세요.trimResults()모서리 케이스의 정규식을 조정할 필요 없이 트리밍 요구를 모두 처리합니다.String.split().
프로젝트에서 이미 Guava를 사용하고 있는 경우, 이것이 권장되는 솔루션입니다.자세한 설정 옵션에 대해서는, Guava 유저 가이드 또는 javadoc 의 스플리터 메뉴얼을 참조해 주세요.
이걸로 해볼 수 있어?
sg = sg.replaceAll(", $", "");
그렇지 않으면
if (sg.endsWith(",")) {
sg = sg.substring(0, sg.length() - 1);
}
build.gradle에서 Guava 추가
compile group: 'com.google.guava', name: 'guava', version: '27.0-jre'
그리고 나서.
public static List<String> splitByComma(String str) {
Iterable<String> split = Splitter.on(",")
.omitEmptyStrings()
.trimResults()
.split(str);
return Lists.newArrayList(split);
}
public static String joinWithComma(Set<String> words) {
return Joiner.on(", ").skipNulls().join(words);
}
즐기다:)
간단하고 간단한 솔루션:-
문자열 str="테스트 1, 테스트 2, 테스트 3";
List<String> elementList = Arrays.asList(str.replaceAll("\\s*,\\s*", ",").split(","));출력=["테스트 1", 테스트 2", 테스트 3]
모든 경우에 효과가 있습니다.
나중에 고마워 :-)
모든 공백을 삭제하고 고정 크기 또는 불변 목록을 작성합니다( 참조).asList API 문서)
final String str = "dog, cat, bear, elephant, ..., giraffe";
List<String> list = Arrays.asList(str.replaceAll("\\s", "").split(","));
// result: [dog, cat, bear, elephant, ..., giraffe]
사용할 수도 있습니다.replaceAll(\\s+", "")그러나 최대 효율은 사용 사례에 따라 달라집니다.(자바의 문자열에서 공백 삭제에 대한 @GurselKoca 답변 참조)
다음과 같은 것을 사용할 수 있습니다.
String animals = "dog, cat, bear, elephant, giraffe";
List<String> animalList = Arrays.asList(animals.split(","));
또, 립도 포함시켜 주세요.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
사용방법:
List<String> splitString = (List<String>) Arrays.asList(jobtype.split(","));
코틀린에서는
val stringArray = commasString.replace(", ", ",").split(",")
어디에stringArray이List<String>그리고.commasString이String쉼표와 공백으로
이것은 문자열을 콤마로 분할하는 간단한 방법입니다.
import java.util.*;
public class SeparatedByComma{
public static void main(String []args){
String listOfStates = "Hasalak, Mahiyanganaya, Dambarawa, Colombo";
List<String> stateList = Arrays.asList(listOfStates.split("\\,"));
System.out.println(stateList);
}
}
"Old School"(JDK 1.0) java.util 클래스 String Tokenizer:
String Tokenizer(String str, String 구분자)
import java.util.*;
public class Tokenizer {
public static void main(String[] args) {
String str = "dog, cat, bear, elephant, ..., giraffe";
StringTokenizer tokenizer = new StringTokenizer(str, ",");
List<String> strings = new ArrayList<String>();
while (tokenizer.hasMoreTokens()) {
// if need to trim spaces .trim() or use delim like ", "
String token = tokenizer.nextToken().trim();
strings.add(token);
}
// test output
strings.forEach(System.out::println);
}
}
NB: StringTokenizer는 호환성을 위해 유지되는 레거시 클래스입니다.단, 새로운 코드에서는 사용이 권장되지 않습니다.이 기능을 원하는 사용자는 String 또는 java.util.regex 패키지의 분할 방식을 사용하는 것이 좋습니다.
예:
import java.util.regex.*;
...
// Recommended method<?>
Pattern commaPattern = Pattern.compile("\\s*,\\s*");
String[] words = commaPattern.split(str);
List<String> wordList = new ArrayList<String>(Arrays.asList(words));
// test output
wordList.forEach(System.out::println);
...
라고 하는 기능이 있습니다.replaceAll()원하는 것으로 교체하여 모든 화이트 스페이스를 제거할 수 있습니다.예로서
String str=" 15. 9 4;16.0 1"
String firstAndSecond[]=str.replaceAll("\\s","").split(";");
System.out.println("First:"+firstAndSecond[0]+", Second:"+firstAndSecond[1]);
다음과 같은 것이 있습니다.
First:15.94, Second:16.01
언급URL : https://stackoverflow.com/questions/10631715/how-to-split-a-comma-separated-string
'programing' 카테고리의 다른 글
| getter에서 선택한 속성 가져오기 (0) | 2022.07.10 |
|---|---|
| vue-timeout(vue-timeout:모듈을 찾을 수 없습니다. (0) | 2022.07.10 |
| Android Studio 콘솔에 인쇄하는 방법 (0) | 2022.07.10 |
| v-radio 레이블에서 HTML을 설정하는 방법 (0) | 2022.07.10 |
| 조건부 연산자를 사용할 때 C는 문자열 연결을 허용하지 않는 이유는 무엇입니까? (0) | 2022.07.10 |