我正在尝试使用正则表达式将字符串拆分为两个。例如,输入字符串的格式为"Something something something 30min"
。它总是以这种格式以分钟为单位的时间结束。我需要将其拆分为"Something something something"
和"30min"
。我现在的解决方案是:
String[] separatedLine = line.split("(?=(\\d)+)" );
然后我得到“东西有点东西”和3.如果我试着改为:
String[] separatedLine = line.split("(?=(\\d\\d))" );
它有效,但我不知道我的号码的大小,它可以是5或者我知道它可以是180。我尝试了很多不同的组合,但似乎没有一种方法适用于每种情况。
答案 0 :(得分:1)
使用字边界:
尝试使用此正则表达式String[] separatedLine = line.split("(?=\\b\\d)" );
这将在30
之前分开,但不会在3
和0
之间分开。
答案 1 :(得分:0)
根据数字前面的空格进行分割。
String[] separatedLine = line.split("\\s+(?=\\d+)" );
OR
如有必要,请在号码后添加min
。
String[] separatedLine = line.split("\\s+(?=\\d+min)" );
<强>码强>
String s = "Something something something 30min";
String[] parts = s.split("\\s+(?=\\d+)");
System.out.println(Arrays.toString(parts));
<强>输出:强>
[Something something something, 30min]
答案 2 :(得分:0)
你可以这样做:
String[] split = "Something something something 30min".split("(?<!\\d)(?=\\d+)");
只要出现的数字不在另一个数字之前,它就会将String
分开。