簡體   English   中英

Android - 如何使用逗號或點作為小數分隔符將字符串解析為數字

[英]Android - How to parse String to Number with both comma or point as decimal separator

我需要一個能解析1,123.12和1.123,12到1123.12的函數。我使用的數字有3個來源,1個總是以美國格式出現,1個總是出現在PT_BR(1.123,12)中,第3個可能出現在任何格式取決於設備的區域設置我如何正確解析所有這些格式?

編輯:我不知道數字格式化的方式,我需要一個可以接收任何格式並正確解析它的函數。 也許我需要的是一種方法來測試哪種格式是表示數字的字符串。 將收到“1.123,12”的東西,並說是“PT_BR”並收到1,123.12並說這是“美國”。 但我不知道如何做到這一點,特別是如何為任何地方做這樣的炒鍋。

我們:

NumberFormat nf = NumberFormat.getInstance(Locale.US);
Number number = nf.parse("1,123.12");

巴西葡萄牙語

NumberFormat nf = NumberFormat.getInstance(Locale.forLanguageTag("pt-BR"));
Number number = nf.parse("1.123,12");

默認語言環境:

NumberFormat nf = NumberFormat.getInstance();
Number number = nf.parse("1123.12");

您只能獲取環境的區域設置。 在字符串的上下文中不存在類似語言環境的東西,它恰恰相反: 字符串的含義取決於語言環境 有些情況下你可以猜出一個字符串代表的數字(比如你​​發布的那個)但是例如123,456呢? 這是模棱兩可的,所以沒有圖書館可以做這項工作。 顯然,如果你施加一些約束(例如,數字必須有兩個十進制數字),你將能夠輕松編寫自己的解析器,但沒有這樣的約定,它根本不可能

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM