IT story

파이프 문자로 문자열 분리 (“|”)

hot-time 2020. 4. 30. 07:37
반응형

파이프 문자로 문자열 분리 (“|”)


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

이 문자열에서 값을 나눌 수 없습니다.

"Food 1 | Service 3 | Atmosphere 3 | Value for money 1 "

내 현재 코드는 다음과 같습니다.

String rat_values = "Food 1 | Service 3 | Atmosphere 3 | Value for money 1 ";
String[] value_split = rat_values.split("|");

산출

[, F, o, o, d,, 1,, |,, S, e, r, v, i, c, e,, 3,, |,, A, t, m, o, s, p, h, e, r, e,, 3,, |,, V, a, l, u, e,, f, o, r,, m, o, n, e, y,, 1,]

예상 출력

음식 1
서비스 3
분위기 3
돈을위한 가치 1


|정규식의 메타 문자입니다. 당신은 그것을 탈출해야합니다 :

String[] value_split = rat_values.split("\\|");

Pattern.quote () 사용

String[] value_split = rat_values.split(Pattern.quote("|"));

//System.out.println(Arrays.toString(rat_values.split(Pattern.quote("|")))); //(FOR GETTING OUTPUT)

이스케이프 문자 사용 (메타 문자)

String[] value_split = rat_values.split("\\|");
//System.out.println(Arrays.toString(rat_values.split("\\|"))); //(FOR GETTING OUTPUT)

StringTokenizer 사용 (정규 표현식 문제 방지)

public static String[] splitUsingTokenizer(String Subject, String Delimiters) 
{
     StringTokenizer StrTkn = new StringTokenizer(Subject, Delimiters);
     ArrayList<String> ArrLis = new ArrayList<String>(Subject.length());
     while(StrTkn.hasMoreTokens())
     {
       ArrLis.add(StrTkn.nextToken());
     }
     return ArrLis.toArray(new String[0]);
}

패턴 클래스 사용 (java.util.regex.Pattern)

Arrays.asList(Pattern.compile("\\|").split(rat_values))
//System.out.println(Arrays.asList(Pattern.compile("\\|").split(rat_values))); //(FOR GETTING OUTPUT)

산출

[Food 1 ,  Service 3 ,  Atmosphere 3 ,  Value for money 1 ]

또는 .. Pattern#quote:

String[] value_split = rat_values.split(Pattern.quote("|"));

This is happening because String#split accepts a regex:

| has a special meaning in regex.

quote will return a String representation for the regex.


split takes regex as a parameter.| has special meaning in regex.. use \\| instead of | to escape it.


String rat_values = "Food 1 | Service 3 | Atmosphere 3 | Value for money 1 ";
    String[] value_split = rat_values.split("\\|");
    for (String string : value_split) {

        System.out.println(string);

    }

참고URL : https://stackoverflow.com/questions/21524642/splitting-string-with-pipe-character

반응형