java如何输出一个竖线_关于java:使用竖线字符(“|”)拆分字符串

本问题已经有最佳答案,请猛点这里访问。

我无法从此字符串中拆分值:

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

预期产出

Food 1

Service 3

Atmosphere 3

Value for money 1

逃离|。

|是正则表达式中的元字符。 你需要逃脱它:

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

我花了15分钟跟踪它,因为我神秘地得到了同样的问题,并认为它与我的新手(对于java 8)使用Array.AsList或Arrays.stream有关 - 感谢devnull!

使用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 ArrLis = new ArrayList(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 ]

对于第二个版本,您会将其称为splitUsingTokenizer("Food 1 | Service 3 | Atmosphere 3 | Value for money 1","|")吗?

或.. Pattern#quote:

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

这是因为String#split接受正则表达式:

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

quote将返回正则表达式的String表示形式。

为实际做RCA而投票赞成

split将regex作为参数。|在正则表达式中具有特殊含义..使用\\|而不是|来转义它。

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

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值