Не мога да разделя стойностите от този низ:
"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,,,,, h, e, r, e,, 3,, |,, V, a, l, u, e,, f, o, r,, m, o, n, e, y,, 1,]
Очакван резултат
Храна 1
Сервиз 3
Атмосфера 3
Съотношение качество-цена 1
Отговори:
355 за отговор № 1|
е метахарактер в режекс. Трябва да избягате:
String[] value_split = rat_values.split("\|");
61 за отговор № 2
Използване на Pattern.quote ()
String[] value_split = rat_values.split(Pattern.quote("|"));
//System.out.println(Arrays.toString(rat_values.split(Pattern.quote("|")))); //(FOR GETTING OUTPUT)
Използване на символи Escape (за метасимволи)
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]);
}
Използване на класа 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)
продукция
[Food 1 , Service 3 , Atmosphere 3 , Value for money 1 ]
13 за отговор № 3
Или.. Pattern#quote
:
String[] value_split = rat_values.split(Pattern.quote("|"));
Това се случва, защото String#split
приема а регулярен:
|
има специално значение в regex.
quote
ще върне представянето на String за регулярен.
6 за отговор № 4
split приема regex като параметър.|
има специално значение в regex .. използване \|
вместо |
за да избяга.
2 за отговор № 5
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);
}