第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Java中檢查字符串是否為數(shù)字

如何在Java中檢查字符串是否為數(shù)字

如何在Java中檢查字符串是否為數(shù)字在解析字符串之前,如何檢查字符串是否為數(shù)字?
查看完整描述

4 回答

?
繁星coding

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊

帶著阿帕奇公域朗3.5及以上:NumberUtils.isCreatableStringUtils.isNumeric.

帶著阿帕奇公域朗3.4及以下:NumberUtils.isNumberStringUtils.isNumeric.

您也可以使用StringUtils.isNumericSpace返回true對于空字符串,并忽略字符串中的內(nèi)部空格。另一種方法是使用StringUtils.isParsable根據(jù)Java,它基本上檢查數(shù)字是可解析的。


查看完整回答
反對 回復(fù) 2019-05-30
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗 獲得超4個贊

這通常是用一個簡單的用戶定義的函數(shù)(即滾動你自己的“isNDigic”函數(shù))來完成的。

類似于:

public static boolean isNumeric(String str) { 
  try {  
    Double.parseDouble(str);  
    return true;
  } catch(NumberFormatException e){  
    return false;  
  }  }

但是,如果您經(jīng)常調(diào)用這個函數(shù),并且您希望許多檢查由于不是一個數(shù)字而失敗,那么這個機(jī)制的性能就不會很好,因為您依賴于每次失敗都拋出異常,這是一個相當(dāng)昂貴的操作。

另一種方法可能是使用正則表達(dá)式檢查數(shù)字的有效性:

public static boolean isNumeric(String str) {
  return str.matches("-?\\d+(\\.\\d+)?");  //match a number with optional '-' and decimal.}

不過,請注意上面的RegEx機(jī)制,因為如果您使用的是非阿拉伯?dāng)?shù)字(即從0到9以外的數(shù)字),它將失敗。這是因為RegEx的“\d”部分將只與[0-9]相匹配,而且實際上并不是國際上所知的。(感謝俄勒岡幽靈指出這一點!)

甚至另一種選擇是使用Java的內(nèi)置java.text.NumberFormat對象來查看解析字符串后解析器的位置是否位于字符串的末尾。如果是,我們可以假設(shè)整個字符串是數(shù)字的:

public static boolean isNumeric(String str) {
  NumberFormat formatter = NumberFormat.getInstance();
  ParsePosition pos = new ParsePosition(0);
  formatter.parse(str, pos);
  return str.length() == pos.getIndex();}


查看完整回答
反對 回復(fù) 2019-05-30
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗 獲得超4個贊

如果您使用的是Android,那么您應(yīng)該使用:

android.text.TextUtils.isDigitsOnly(CharSequence?str)

保持簡單。大多數(shù)情況下,每個人都可以“重新編程”(同樣的事情)。


查看完整回答
反對 回復(fù) 2019-05-30
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊

對于使用異常測試字符串是否為數(shù)字,我也有類似的性能考慮。因此,我最終拆分字符串并使用java.lang.Character.isDigit().

public?static?boolean?isNumeric(String?str){
????for?(char?c?:?str.toCharArray())
????{
????????if?(!Character.isDigit(c))?return?false;
????}
????return?true;}

根據(jù)Javadoc,?Character.isDigit(char)將正確識別非拉丁數(shù)字。就性能而言,我認(rèn)為簡單的N個比較(其中N是字符串中的字符數(shù))比執(zhí)行正則匹配更具有計算效率。

更新:正如Jean-Fran ois Corbett在評論中指出的,上述代碼只驗證正整數(shù),這涵蓋了我的大部分用例。下面是根據(jù)系統(tǒng)中使用的默認(rèn)區(qū)域設(shè)置正確驗證小數(shù)的更新代碼,假設(shè)小數(shù)分隔符只在字符串中出現(xiàn)一次。

public?static?boolean?isStringNumeric(?String?str?){
????DecimalFormatSymbols?currentLocaleSymbols?=?DecimalFormatSymbols.getInstance();
????char?localeMinusSign?=?currentLocaleSymbols.getMinusSign();

????if?(?!Character.isDigit(?str.charAt(?0?)?)?&&?str.charAt(?0?)?!=?localeMinusSign?)?return?false;

????boolean?isDecimalSeparatorFound?=?false;
????char?localeDecimalSeparator?=?currentLocaleSymbols.getDecimalSeparator();

????for?(?char?c?:?str.substring(?1?).toCharArray()?)
????{
????????if?(?!Character.isDigit(?c?)?)
????????{
????????????if?(?c?==?localeDecimalSeparator?&&?!isDecimalSeparatorFound?)
????????????{
????????????????isDecimalSeparatorFound?=?true;
????????????????continue;
????????????}
????????????return?false;
????????}
????}
????return?true;}


查看完整回答
反對 回復(fù) 2019-05-30
  • 4 回答
  • 0 關(guān)注
  • 1751 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號