program tip

따옴표 사이의 경우를 제외하고 Java의 공백에서 문자열 분할 (예 : \ "hello world \"를 하나의 토큰으로 취급)

radiobox 2020. 12. 15. 18:55
반응형

따옴표 사이의 경우를 제외하고 Java의 공백에서 문자열 분할 (예 : \ "hello world \"를 하나의 토큰으로 취급)


이 질문에 이미 답변이 있습니다.

String공백을 기준 으로을 분할하고 인용 된 부분 문자열을 한 단어로 사용하려면 어떻게해야합니까?

예:

Location "Welcome  to india" Bangalore Channai "IT city"  Mysore

다음과 ArrayList같이 저장되어야합니다.

Location
Welcome to india
Bangalore
Channai
IT city
Mysore

방법은 다음과 같습니다.

String str = "Location \"Welcome  to india\" Bangalore " +
             "Channai \"IT city\"  Mysore";

List<String> list = new ArrayList<String>();
Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(str);
while (m.find())
    list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes.


System.out.println(list);

산출:

[Location, "Welcome  to india", Bangalore, Channai, "IT city", Mysore]

정규 표현식은 간단히 말합니다.

  • [^"]     -다른 것으로 시작하는 토큰 "
  • \S*       -0 개 이상의 공백이 아닌 문자가 뒤 따릅니다.
  • ...또는...
  • ".+?"   - "다른 때까지 - 기호 뒤에 무엇이든 ".

참조 URL : https://stackoverflow.com/questions/7804335/split-string-on-spaces-in-java-except-if-between-quotes-ie-treat-hello-wor

반응형