为了账号安全,请及时绑定邮箱和手机立即绑定

用竖线字符(“ |”)分割字符串

用竖线字符(“ |”)分割字符串

宝慕林4294392 2019-10-16 13:43:22
我无法从此字符串拆分值:"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
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

使用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]);

}

使用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 ]


查看完整回答
反对 回复 2019-10-16
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

或.. Pattern#quote:


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

发生这种情况是因为String#split接受正则表达式:


|在正则表达式中有特殊含义。


quote将为regex返回String表示形式。


查看完整回答
反对 回复 2019-10-16
  • 3 回答
  • 0 关注
  • 2405 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信