我有一个java程序,我需要拆分整数值而不是浮点值
即。 "1/\\2"
应生成:[1,/\\,2]
但是"1.0/\\2.0"
应该产生:[1.0,/\\,2.0]
有人有任何想法吗?
或者有人可以指出我如何分割特定字符串"\\/"
和"/\\"
吗?
更新:对不起!还有一个案子!对于字符串“100 / \ 3.4e + 45”我需要将其拆分为: [100,/ \,3.4,e,+,45]
我当前的正则表达式(真的很难看):
line.split("\\s+|(?<=[-+])|(?=[-+])|(?:(?<=[0-9])(?![0-9.]|$))|(?:(?<![0-9.]|^)(?=[0-9]))|(?<=[-+()])|(?=[-+()])|(?<=e)|(?=e)");
并为字符串:“100 / \ 3.4e + 45”给我: [100,/ \,3.4,+,45]
答案 0 :(得分:0)
您可以尝试这样的事情:
String regex = "\\d+(.\\d+)?", str = "1//2";
Matcher m = Pattern.compile(regex).matcher(str);
ArrayList<String> list = new ArrayList<String>();
int index = 0;
for(index = 0 ; m.find() ; index = m.end()) {
if(index != m.start()) list.add(str.substring(index, m.start()));
list.add(str.substring(m.start(), m.end()));
}
list.add(str.substring(index));
我们的想法是使用regex
和Matcher
查找号码,并在两者之间添加字符串。
答案 1 :(得分:0)
这个正则表达式应该这样做:
(?:(?<=[0-9])(?![0-9.]|$))|(?:(?<![0-9.]|^)(?=[0-9]))
这是两张基本匹配的支票:
它将匹配数字后面/前面的空格,因此您可以在split()
中使用此正则表达式。
请参阅regex101了解演示。
<强>后续强>
任何人都可以指出我如何分割特定的字符串&#34; \ /&#34;和&#34; / \&#34;&#34;
如果要在特定模式之前拆分,请使用正向前瞻:(?=xxx)
。如果要在特定模式之后进行拆分,请使用正向后视:(?<=xxx)
。要么做,请按|
分隔:
(?<=xxx)|(?=xxx)
其中xxx
是文本 \/
或/\
,即正则表达式\\/|/\\
,并且是Java字符串文字的两倍:
"(?<=\\\\/|/\\\\)|(?=\\\\/|/\\\\)"
请参阅regex101了解演示。