有沒有人有寫JavaScript文化敏感的ParseFloat函數的建議,所以當我在美國文化格式的字符串100,000.22時,解析浮點函數返回100000.22,而如果我在瑞典文化中輸入100.000,22,它會返回100000.22的浮點數?JavaScript中的文化敏感ParseFloat函數?
9
A
回答
3
這是一個有點粗糙和準備,但它可能是足夠的,讓您在數千小數點分隔符傳:
function parseFloatOpts(num, decimal, thousands) {
var bits = num.split(decimal, 2),
ones = bits[0].replace(new RegExp('\\' + thousands, 'g'), '');
ones = parseFloat(ones, 10),
decimal = parseFloat('0.' + bits[1], 10);
return ones + decimal;
}
例子:
parseFloatOpts("100.000,22", ',', '.'); //100000.22
parseFloatOpts("100,000.22", '.', ','); //100000.22
NB,這並不能確保千位分隔符確實代表數千等等,或者根據功能的重要性做許多其他的保護措施,您可能希望這樣做。
1
var parse = function(st){
if(st.indexOf(",") === st.length-3){
st = st.replace(".", "").replace(",", ".");
}else{
st = st.replace(",", "");
}
return parseFloat(st, 10)
}
console.log(parse("100,000.22")) // 100000.22
console.log(parse("100.000,22")) // 100000.22
我只是檢查是否在第三個位置有一個逗號。這可以進一步改進,以檢查是否有在4日到的情況下你最後一個位置的期間,沒有逗號(如100.000)
1
看着lonesomday的給了我這個念頭:
你也可以做:
function parse (str)
var ar = str.split(/\.|,/);
return Number(ar[0]+ar[1]+"."+ar[3]);
0
這是一個粗略的功能。它將假定最後一個標點符號來表示小數,無論是逗號,句點還是其他可能需要表示的字符。然後從整個數字中刪除其他標點符號。將它放回到一起,並解析爲浮動。
function normalizeFloat(number, chars) {
var lastIndex = -1;
for(i=0; i < chars.length; i++) {
t = number.lastIndexOf(chars[i]);
if (t > lastIndex) {
lastIndex = t;
}
}
if (lastIndex == -1) {
lastIndex = number.length;
}
var whole = number.substring(0, lastIndex);
var precision = number.substring(lastIndex);
for (i=0; i < chars.length; i++) {
whole = whole.replace(chars[i], '');
precision = precision.replace(chars[i],'.');
}
number = whole + precision;
f = parseFloat(number);
return f;
}
試試這個:
alert(normalizeFloat('12.345,77', [',','.']).toFixed(2));
alert(normalizeFloat('12,345.77', [',','.']).toFixed(2));
6
我已經改善mwilcox」功能來處理價值withous分隔符。
function parseFloatOpts (str) {
if(typeof str === "number"){
return str;
}
var ar = str.split(/\.|,/);
var value = '';
for (var i in ar) {
if (i>0 && i==ar.length-1) {
value += ".";
}
value +=ar[i];
}
return Number(value);
}
相關問題
- 1. 文化敏感GetHashCode
- 2. JavaScript文化敏感貨幣格式
- 3. javascript和parseFloat函數?
- 4. 不同文化中的JavaScript parseFloat
- 5. 散列數據變化的敏感性
- 6. 敏感數據
- 7. EF4中的敏感數據
- 8. CodeIgniter中的敏感數據
- 9. C#文化敏感句子識別
- 10. 文化敏感大寫ToUpperInvariant/ToLowerInvariant
- 11. 上下文敏感的GridLookUpEdit
- 12. 動態/上下文敏感的構造函數注入
- 13. 以敏感的方式粘貼敏感數據
- 14. 的Javascript包含大小寫不敏感
- 15. Alfresco javascript搜索不敏感的案例
- 16. 的Javascript正則表達式不敏感
- 17. 上下文敏感語法
- 18. 替換JSON序列化中的敏感數據值
- 19. Zend中敏感數據的持久性
- 20. 如何從debug_backtrace函數中刪除敏感數據?
- 21. JavaScript中parseFloat的第二個參數?
- 22. ASP .NET MVC敏感數據
- 23. Silverlight安全 - 敏感數據
- 24. .NET MVC +敏感數據
- 25. 敏感數據轉儲
- 26. REST API GET敏感數據
- 27. HTTPS發送敏感數據
- 28. Java - 存儲敏感數據
- 29. Mule記錄敏感數據
- 30. 存儲敏感數據
我不知道這是不是一種文化的東西,它是一種'東西'。 – Victor 2011-02-09 23:33:09
當我爲ASP.Net應用程序編寫解決方案時,我設法解決了我的問題,而無需爲它編寫任何自定義解決方案。由於MSDN庫提供了JavaScript基本類型擴展方法,其中之一是數字類型擴展,它具有函數localeFormat和parseLocale。這些函數提供了從/到小數格式w.r.t文化的轉換。請參閱http://msdn.microsoft.com/en-us/library/bb310835(v=VS.90).aspx。 – 2011-02-10 22:26:32
也可以從服務器設置文化,否則這些功能將使用默認文化。看到這個鏈接http://msdn.microsoft.com/en-us/library/bz9tc508(v=VS.90).aspx。在我的情況下,我必須設置sv-SE,因爲我需要使用瑞典文化來格式化數字。 – 2011-02-10 22:31:44