Java 如何建议拆分整数?
我试图在数字之间添加空格,但结果是一些数字被拆分,而另一些数字有时会丢失 代码: 结果:Java 如何建议拆分整数?,java,regex,split,spaces,Java,Regex,Split,Spaces,我试图在数字之间添加空格,但结果是一些数字被拆分,而另一些数字有时会丢失 代码: 结果: 3 21 HELLO how do "you" do? $ah 213 - 2 0 d1 001 x 规则: 不管整数有多大,不要把它分成许多部分。 $+数字($123)或$+字母+数字($abc123)不要在数字前后添加空格。 字母+数字=分开它 通缉结果: 321 HELLO how do "you" do? $ah213 -20 d 1001 x 正则表达式中的一个小错误:[^d]应该是[^\\
3 21 HELLO how do "you" do? $ah 213 - 2 0 d1 001 x
规则:
不管整数有多大,不要把它分成许多部分。
$+数字($123)或$+字母+数字($abc123)不要在数字前后添加空格。
字母+数字=分开它
通缉结果:
321 HELLO how do "you" do? $ah213 -20 d 1001 x
正则表达式中的一个小错误:
[^d]
应该是[^\\d]
,否则您检查的是字符d
,而不是字符类\d
但是它仍然插入了太多的空格,我真的没有办法用你现在的正则表达式来避免
有效的东西:
String line = "321HELLO how do you do? $ah213 -20d1001x";
line = line.replaceAll("(?<=[-\\d.])(?=[^\\s-\\d.])|(?<!\\$[a-z]{0,1000})(?<=[^\\s-\\d.])(?=[-\\d.])", " ");
System.out.println(line);
说明:
String line = "321HELLO how do you do? $ah213 -20d1001x";
line = line.replaceAll("(?<=[-\\d.])(?=[^\\s-\\d.])|(?<!\\$[a-z]{0,1000})(?<=[^\\s-\\d.])(?=[-\\d.])", " ");
System.out.println(line);
[-\\d.]
是我假定您将其归类为“数字的一部分”(虽然单独的
会被视为数字,这可能并不需要)(您不需要在[]
中转义
)。(?$
后跟0-1000(不能在“后看”中使用*
)字母(将阻止使用$123
和$ah123
的空格)
附加说明:
String line = "321HELLO how do you do? $ah213 -20d1001x";
line = line.replaceAll("(?<=[-\\d.])(?=[^\\s-\\d.])|(?<!\\$[a-z]{0,1000})(?<=[^\\s-\\d.])(?=[-\\d.])", " ");
System.out.println(line);
原来你并不真的需要
?为什么这里没有空格$ah213
,这段代码是如何形成的D1001 x
?我的意思是我希望它是D1001 x
?@HamZa,你的逻辑解释是正确的,因为我没有给出足够的信息。添加了更多信息,抱歉。刚才添加了解释为什么不应该为第二个正则表达式分隔$ah213
@user1768615?不。括号中的组/事物只有([-\\d.])
和([^\\s-\\d.])
(环顾四周不是捕获组)。请注意,由于|
,只会填充其中一个,但如果未填充组,则该组将为空,因此可以同时添加这两个组。在正则表达式匹配的字符串部分(已选中但未包含)中不包含前瞻,因此不需要/无法替换它们。
replaceAll("([-\\d.])(?=[^\\s-\\d.])|(?<!\\$[a-z]{0,1000})([^\\s-\\d.])(?=[-\\d.])", "$1$2 ")