![](/img/trans.png)
[英]How to parse numbers more strict than what NumberFormat does in Java?
[英]NumberFormat parse not strict enough
我有一個帶有Locale.US的NumberFormat
的JFormattedTextField
。 因此,小數點分隔符是點,分組分隔符是逗號。
現在,我在此文本字段中輸入字符串“ 1,23”,並將焦點移至另一個組件。 我希望該字符串消失(就像我鍵入“ a”而不是“ 1,23”時那樣),因為使用Locale.US時,它顯然不是數字的有效表示形式。 而是將文本字段中的文本更改為“ 123”。
這是因為在解析時使用的NumberFormat
並不嚴格,只是忽略了逗號。
問題 :在這種情況下,如何告訴NumberFormat
拋出ParseException
,以便將焦點移到另一個組件后文本字段為空?
測試代碼:
JDialog dialog = new JDialog();
JPanel panel = new JPanel(new BorderLayout());
dialog.getContentPane().add(panel);
NumberFormat nf = NumberFormat.getInstance(Locale.US);
JFormattedTextField textField = new JFormattedTextField(nf);
textField.setText("1,23");
panel.add(textField, BorderLayout.CENTER);
panel.add(new JButton("focus"), BorderLayout.EAST);
dialog.pack();
dialog.setVisible(true);
將焦點從文本字段移至按鈕,文本將變為“ 123”。
我建議您使用正則表達式並使用匹配功能,如下所示:
matches("\\d+([.,])?")
另外,如果您將使用Integer.parseInt(String)
將會引發異常,如果將其解析或可以使用Double.parseDouble(value)
實際上, Number
只是Double
的超類,因此您可以使用Double.parseDouble(...)
,然后自動拆箱就可以完成其余工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.