我不能从这个字符串中拆分值:
"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
发布于 2014-02-03 18:20:24
|
是正则表达式中的元字符。你需要避开它:
String[] value_split = rat_values.split("\\|");
发布于 2014-02-03 18:27:28
使用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 ]
发布于 2014-02-03 18:21:13
或者..。Pattern#quote
String[] value_split = rat_values.split(Pattern.quote("|"));
之所以发生这种情况,是因为String#split
接受正则表达式
quote
将返回正则表达式的字符串表示。
https://stackoverflow.com/questions/21524642
复制相似问题