2011-12-30 116 views
87

CSSで数値を書式設定することはできますか?ある :小数点以下の桁、小数点区切り、千単位の区切りなどCSSで数値(小数点以下の桁数、桁区切り記号など)を書式設定する

+42

あなたは本当にできるはずがありません。結局のところ、50,000または50000または50,000.00は、まったく同じ 'データ'であり、ちょうど異なって表示されます。これはCSSのためのものです。 – MrMisterMan

+3

@ MrMisterMan:ここに投げられているアイデアがいくつかあります:http://wiki.csswg.org/ideas/content-formatting#numbers私はおそらく、「仕様」を引用してみんなの希望を上げて嫌がらせをして告発するつもりですしかし、。そして、私にとっては、数字以外のテキストがここでどのように扱われるのかが分かりました。 – BoltClock

+3

これはいいと思いますが、番号は他の点ではローカライズされたページの中に埋め込まれています。つまり、ページの残りの部分は英語、中国語、その他の言語であり、番号はIMOがそのローカリゼーションに準拠する必要があります。なぜそれらはページの残りの部分とは別にローカライズされるべきですか...? – deceze

答えて

17

、それを変更:

var a = "1222333444555666777888999"; 
a = a.replace(new RegExp("^(\\d{" + (a.length%3?a.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim(); 

その他の区切り記号をカンマで使用する必要がある場合は、

var sep = ","; 
a = a.replace(/\s/g, sep); 

または関数として:

function numberFormat(_number, _sep) { 
    _number = typeof _number != "undefined" && _number > 0 ? _number : ""; 
    _number = _number.replace(new RegExp("^(\\d{" + (_number.length%3? _number.length%3:0) + "})(\\d{3})", "g"), "$1 $2").replace(/(\d{3})+?/gi, "$1 ").trim(); 
    if(typeof _sep != "undefined" && _sep != " ") { 
     _number = _number.replace(/\s/g, _sep); 
    } 
    return _number; 
} 
+1

ありがとうございます。純粋なCSSソリューションではありませんが、タスクを実行します! – Don

+0

私はそれが好きです。しかし、私はまた、置換の前に数字を文字列に変換する必要がありました。あなたは番号を置き換えることはできません。 – Mardok

+0

'_number.replace'を呼び出す前に、このような文字列であることを確認する必要があります。 '_number = typeof _number!=" undefined "&& _number> 0? '_number.replace'が定義されていないか、関数ではない – Shalkam

7

いいえ、あなたはそれがDOMでいたらjavascriptを使用するか(PHP /ルビー/ pythonのなど)あなたの言語のサーバー側を経由して、それをフォーマットする必要があり

+4

数字の書式は、コンテンツのテキストやその他の表記上の問題(たとえば、言語に依存する日付表記)のような内容の問題です。したがって、数値の書式設定はローカリゼーションであり、コンテンツの生成時に処理する必要があります。 JavaScriptでこれを行うのは、JavaScriptで生成されたコンテンツの部分には意味があります。 –

+0

私はそれに完全に同意します。それが私の答えに書いた理由です。おそらくそれにもっと重点を置いていたはずです。 – mreq

+0

コンテンツまたはプレゼンテーションのいずれかになります。同じコンテンツを別の方法で表示するCSSの 'rtl'を取ってください。 – Don

2

この目的でCSSを使用することはできません。 JavaScriptを使用することをお勧めします。詳細についてはこれを見てください:JavaScript equivalent to printf/string.format

また、Petrはサーバー側で扱うことができますが、あなたのシナリオに完全に依存しています。

2

私はできないと思います。 PHPでコーディングする場合は、number_format()を使用できます。また、他のプログラミング言語にも数字を書式設定する機能があります。

22

2008年にCSSワーキンググループがContent Formattingにドラフトを公開しました。 しかし、今は新しいものはありません。そうする

15

おそらく最良の方法は、...

5

ない答えその後、DOMがロードされているスパンで書式設定を行うにjQueryの.eachを使用する書式設定を表すクラスでスパンを設定するコンボです関心のあるパーヘルパス。私は数年前にa proposal to the CSS WGを送りました。しかし、何も起こっていない。確かに彼ら(そしてブラウザベンダー)がこれを真の開発者の関心事と見なすならば、恐らくボールが回転し始める可能性がありますか?

+2

お寄せいただきありがとうございます。私はいつかそれがつかまることを願っています。 – adjenks

3

それは私がPHP関数number_format()Narrow No-break Space )を使用して...

を助けている場合。これは、曖昧さのない千単位のセパレータとしてよく使用されます。

echo number_format(200000, 0, "", " "); 

IE8が狭いノーブレークスペースをレンダリングするためにいくつかの問題があるので、私は、SPAN、私は次のいずれかを使用するJavaScriptで任意の数字のためによく

echo "<span class='number'>".number_format(200000, 0, "", "<span></span>")."</span>"; 
.number SPAN{ 
    padding: 0 1px; 
} 
+0

残念なことに、これはサーバー側ですが、わずかなCPUヒットがあり、html/css編集マスク機能が必要です。ドレッシングとレンダリングは、私たちがpdfを提供していない限り、クライアント側でなければなりませんか? – mckenzm

0

あなたはJSPページ

JSP Page 
//import the jstl lib 
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> 

<c:set var="balance" value="120000.2309" /> 
<p>Formatted Number (1): <fmt:formatNumber value="${balance}" 
     type="currency"/></p> 
<p>Formatted Number (2): <fmt:formatNumber type="number" 
     maxIntegerDigits="3" value="${balance}" /></p> 
<p>Formatted Number (3): <fmt:formatNumber type="number" 
     maxFractionDigits="3" value="${balance}" /></p> 
<p>Formatted Number (4): <fmt:formatNumber type="number" 
     groupingUsed="false" value="${balance}" /></p> 
<p>Formatted Number (5): <fmt:formatNumber type="percent" 
     maxIntegerDigits="3" value="${balance}" /></p> 
<p>Formatted Number (6): <fmt:formatNumber type="percent" 
     minFractionDigits="10" value="${balance}" /></p> 
<p>Formatted Number (7): <fmt:formatNumber type="percent" 
     maxIntegerDigits="3" value="${balance}" /></p> 
<p>Formatted Number (8): <fmt:formatNumber type="number" 
     pattern="###.###E0" value="${balance}" /></p> 

結果を

フォーマットされた数値をフォーマットするためのJSTLタグライブラリを使用することができます(1):£120,000.23

フォーマット番号(2):000.231

フォーマット番号(3):120,000.231

フォーマット番号(4):120000。231

フォーマットされた数値(5):023パーセント

フォーマットされた数値(6):12,000,023.0900000000%

フォーマットされた数値(7):023パーセント

フォーマットされた数値(8):120E3

関連する問題