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