-2

45,890.00、1.5v 2,12g などのフォーマットされた Decimal 値を含む文字列があります。さらに、特殊文字、HTML エンティティ (エスケープされたものとエスケープされていないもの) UTF-8 でエンコードされた文字などがすべて 1 行に含まれています。エンティティをクリーンアップすることはできましたが、スペースまたは句読点で分割しても、コンマまたはピリオドで区切られた数値が分割されないようにする方法を考え出すのにまだ苦労しています。

例の文字列:

> 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]); ";

期待される出力:

a

b

c

1.5

1,5

1.5v

1.5v

1255,456.78

6<7

6>5

毛皮

AGBの

毛皮

数値の形式は次のとおりです。COMMA |で区切られた xx または xxx,xxxx.xxxx,xxxx 。ドット| 混合

文字列からエンティティを消去した後、句読点文字とスペースのリストで分割しようとしましたが、コンマで分割しながら小数のようなキーワード (1,5 1.5v 22,33.66 ..etc) を保持するにはどうすればよいですか?期間?

4

1 に答える 1

0

パターンで正規表現を使用する

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

これにより、ピリオドまたはコンマの両側に数字がないもの、またはピリオドまたはコンマではないその他の句読点が分割されます。パイプ間の 3 番目のセクションは、すべてのスペースをカバーします。その最後の部分は、この回答で説明されている否定的な先読みに基づいており、数値の分割から保護されている既に一致しているコンマとピリオドがここで一致するのを防ぎます。

于 2012-10-01T02:43:22.063 に答える