- - PR -
3桁数字の編集正規表現
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-08-21 18:34
こんにちは。
現在文字列型の数値(小数点あり、負数あり)を 3桁ごとにカンマ編集するルーチンを実装しようとして、 煮詰まっています。 現状は1回目のみ実行されているようなのですが、うまく動いてくれません。 どこが問題なのか、指摘していただけると助かります。 どうか、よろしくお願いします。 (バージョン j2sdk1.4.1 OS Windows.XP Service Pack2) //---コード-start String value = "-123456.789"; String resStr; Pattern pattern1 = Pattern.compile("^([+-]?\\d+)(\\d\\d\\d)"); Matcher matcher1 = pattern1.matcher(value); StringBuffer str = new StringBuffer(); while ( matcher1.find() ) { matcher1.appendReplacement(str,"$1,$2"); } matcher1.appendTail(str); resStr = str.toString(); //---コード-end |
|
投稿日時: 2005-08-21 18:51
普通にNumberFormatを利用してはだめなのですか?
|
|
投稿日時: 2005-08-21 20:19
ご返答ありがとうございます。
ひとつ大事な用件を抜かしておりました。 valueに設定される値はBigDecimalの範囲を含みます。 NumberFormatではうまく行かないと思い、 あとは正規表現で変換するほかないかなと考えたはいいのですが、 うまく動いていない次第です。 |
|
投稿日時: 2005-08-21 20:51
DecimalFormat というのがあるみたいですけど.. http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/text/DecimalFormat.html |
|
投稿日時: 2005-08-21 21:31
Anthyhimeさん、jkさん感謝です。
次のようにやったら、うまくいきました!!! DecimalFormatは勉強不足でした。 どうもありがとうございました。 //---コード-start String value = "-123456.789"; String resStr; BigDecimal bdvalue = new BigDecimal(value); DecimalFormat decimalformat = new DecimalFormat("###,###"); resStr = decimalformat.format(bdvalue); //---コード-end |
|
投稿日時: 2005-09-12 18:42
正規表現でやる方法です
オライリーのフクロウ本の受け売りですが・・・ ![]() class RegexTest { public static void main(String[] argv){ System.out.println("-1234".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); System.out.println(" -123".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); System.out.println(" 1234".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); System.out.println("12345".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); System.out.println("123456".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); System.out.println("123456789".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); System.out.println("-12346789".replaceAll("(?m)(?<=\\d)(?=(?:\\d{3})+$)",",")); } } OracleSQLパズル http://oraclesqlpuzzle.hp.infoseek.co.jp |
1