-2

我有一个字符串,其中包含格式化的十进制值,例如 45,890.00、1.5v 2,12g 等。此外,它在一行中包含特殊字符、HTML 实体(转义和未转义)UTF-8 编码字符等。虽然我已经设法清理了实体,但我仍在努力想出一种方法来确保空格或标点符号的拆分不会拆分由逗号或句点分隔的数字。

示例字符串

> String original_str = 
>     "a,b;c.d+e-f/g\h*i~j=k?l$m 1.5 1,5 1.5v 1,5v 1255,456.78 & 6<7 &amp; 6&gt;5 &#1602; f&uuml;r; {AGB's;} ([für]); ";

预期输出:

一种

b

C

ETC

1.5

1,5

1.5v

1,5v

1255,456.78

6<7

6>5

毛皮

AGB 的

毛皮

数字格式可以是:xx 或 xxx,xxxx.xxxx,xxxx 以COMMA |分隔 | 混合

从字符串中清除实体后,我尝试通过标点符号和空格列表将其拆分,但如何在用逗号和时期?

4

1 回答 1

0

使用带有模式的正则表达式

.split("[^0-9][.,]|[.,][^0-9]|\\s+|(?![.,])\\p{Punct}")

这将拆分句号或逗号两侧没有数字的任何内容,或者任何其他不是句号或逗号的标点符号。管道之间的第三部分覆盖任何空间。最后一部分基于此答案中讨论的否定前瞻,以防止已匹配的逗号和句点在此处匹配,我们避免在此处拆分数字。

于 2012-10-01T02:43:22.063 回答