sirve settitle que para definicion java regex

definicion - para que sirve settitle en java



División de cadena con carácter de tubería("|") (5)

Esta pregunta ya tiene una respuesta aquí:

No puedo dividir valores de esta cadena:

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

Aquí está mi código actual:

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

Salida

[, 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,]

Rendimiento esperado

Comida 1
Servicio 3
Atmósfera 3
Relación calidad-precio 1


Usando Pattern.quote ()

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

Usar caracteres de escape (para metacaracteres)

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

Usando StringTokenizer (para evitar problemas de expresiones regulares)

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]); }

Usando la clase Pattern (java.util.regex.Pattern)

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

Salida

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


O .. Pattern#quote :

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

Esto está sucediendo porque String#split acepta una expresión regular :

| tiene un significado especial en regex .

quote devolverá una representación de Cadena para la expresión regular .


split toma la expresión regular como un parámetro. | tiene un significado especial en regex .. use //| en lugar de | escapar de eso


| es un metacarácter en expresiones regulares. Necesitarías escapar de eso:

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


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); }