【发布时间】:2021-12-18 01:28:36
【问题描述】:
我想从字符串中删除不是加号、减号、乘号或除号 (/) 的任何内容。
所以我想我会使用正则表达式和负前瞻。
给定一个 Java 数组:
String[] operandsArray = str.split("(?!\\u002A|\\u002B|\\u002D|\\u002F).")
还有一个55+5的测试字符串,结果数组operandsArray包含:
0:""
1:""
2:"+"
我正在寻找它只包含操作数,所以:
0:"+"
并给出:55+6-6*6/6,将返回:
0:"+"
1:"-"
2:"*"
3:"/"
它也应该匹配重复的,所以给定 5+5+5+5,将返回:
0:"+"
1:"+"
2:"+"
谁能帮忙解决一下,谢谢
【问题讨论】:
-
看来你只想match and extract 和
[-+/*]正则表达式。 -
@WiktorStribiżew 嗨,使用
[-+/*]将去除操作数并留下任何其他内容,从而产生一个数组,假设给定 55+5,将包含 55 和 5,我正在寻找做相反的事情,只有 * 会保留 -
删除所有不是运算符的内容,然后在每个字符处拆分:
str.replaceAll("[^-+/*]","").split("") -
@WhatTheWhat 你认为我链接的解决方案是什么?
-
不要使用
split,使用Matcher#find,正如我在顶部评论中所展示的那样。