Java で文字列が数値かどうかを判断する 5 つの方法を段階的に説明します。

方法 1: JAVA 独自の関数
public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i ))を使用する){
false を返す;
}
}
true を返す;
}

方法 1 では、文字列の各文字を走査し、Character.isDigit()関数を使用して各文字が数字であるかどうかを確認します。文字列内のすべての文字が数字の場合、このメソッドはtrueを返します。ただし、文字列に数字以外の文字が含まれている場合は、すぐにfalseを返します

このアプローチはすっきりしていますが、 「123」のような文字列(末尾にスペースが含まれる) を数値ではないとみなすため、厳密すぎる可能性があります。

 

メソッド 2:
/*
*整数かどうかを判断します

* @param str
* @return で渡される文字列は整数であり、true を返します。それ以外の場合は false を返します
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.コンパイル("^ [-\+]?[\d]*$");
return pattern.matcher(str).matches();
}

方法 2 では、正規表現を使用して、文字列に数字のみが含まれているかどうかを確認します。正規表現["^[-+]?[\d]*$"]で始まるすべての文字列と一致します。この正規表現は、文字列の先頭が正または負の符号であり、その後に任意の数の数字が続くことを意味します。 。ただし、実際には「」は数値の一部ではないにもかかわらず、 「123」のような文字列は整数であると認識されます。

 

方法 3: FuncGPT (Hui 関数) が
パッケージcom.feisuanyz.function を自動的に生成します。

import com.feisuanyz.flow.core.cmpt.annotation.function.MethodDesc;

com.feisuanyz.flow.core.cmpt.annotation.function.ParamDescをインポートします。

 

パブリック クラス StringNumberChecker {

   

@MethodDesc (desc = "文字列が数値かどうかを判断します" ,

パラメータ = {

@ ParamDesc (name = "str" , desc = "判定対象の文字列" ),

})

public static boolean isNumeric ( String str ) {

        if (str == null || str . isEmpty ()) { //文字列が空かどうかを確認する

            falseを返します

        }

 

        {を試してください

            Double .parseDouble (str); // Double.parseDouble()メソッドを使用して文字列をdoubleに変換しようとします

            return true ; //変換は成功しました、文字列は数値です

        } catch ( NumberFormatException e ) {

            return false ; //変換に失敗しました、文字列は数値ではありません

        }

    }

}

方法 3 では、Double.parseDouble() メソッドを使用して、文字列を倍精度浮動小数点数に変換しようとします。変換が成功した場合は、文字列が数値であることを意味し、true が返されます。変換が失敗した場合は、文字列が数値ではないことを意味し、false が返されます。

このコード スニペットには、注釈 @MethodDesc が含まれています。これは、説明 (desc) やパラメーター (params) など、このメソッドに関するいくつかの情報を記述するために使用されます。パラメーターの説明も配列であり、各要素には名前 (name) と説明 (desc) があります。この種のアノテーションは通常、API ドキュメントを生成するため、または一部の IDE のコード プロンプト機能のために使用されます。

この isNumeric メソッドの設計思想は合理的で、ほとんどのシナリオのニーズを満たすことができます。ただし、Double.parseDouble() メソッドは「3.14」などの文字列を有効な浮動小数点数に解析できるため、このメソッドは厳密な意味での「数値」の定義に多少緩い可能性があることに注意することが重要です。より正確な定義が必要な場合 (たとえば、整数値のみを受け入れる、または特定の小数点以下の桁数を持つ浮動小数点数のみを受け入れる)、文字列をチェックするためのより複雑なメソッドをカスタマイズする必要がある場合があります。

全体として、これは文字列を数値として解析できるかどうかを効率的にチェックするためのシンプルかつ明確な方法です。

 

方法四:
public Final static boolean isNumeric(String s) {
if (s != null && !"".equals(s.trim()))
return s.matches("^[0-9]*$");
それ以外の場合は
false を返します。
}

メソッド 4 では、最初に文字列が空かスペースのみが含まれているかどうかを確認し、条件が満たされる場合はfalseを返します。次に、 Stringmatches()メソッドを使用して、文字列が正規表現"^[0-9]*$" と一致するかどうかを確認します。この正規表現は、文字列が数字0 ~ 9のみで構成されていることを意味します。このメソッドは空の文字列とスペースを考慮しますが、「123」などの文字列が見つかった場合は数値として扱います。


方法五:ascii码
public static boolean isNumeric(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);を使用します。
if(chr<48 || chr>57) は
false を返します。
true を返し
ます。
}

このメソッドは、文字列内の各文字のASCIIコードをチェックして、それが数値であるかどうかを判断します。文字のASCIIコードが48 ( '0' ) と57 ( '9' ) の間にない場合は、すぐにfalseを返しますこのメソッドは非常に簡潔ですが、非常に厳密でもあり、 「 」が数値の一部であっても、 「123」のような文字列は数値ではないとみなします。

 

要約すると、これらの方法にはそれぞれ長所と短所があり、どの方法を選択するかは、特定のニーズと数値の定義によって異なります。

 

FuncGPTは、フルスタック自動開発ツールSoFluソフトウェア ロボットが提供する最新機能で、 AIが生成するJava関数に焦点を当て、Java関数の要件を自然言語で記述し、高品質で可読性の高いJava関数コードをリアルタイムに生成します。生成されたコードは、 IDEAに直接コピーすることも、Java の全自動開発ツールの関数ライブラリにワンクリックでインポートすることもできます。無料で開発および使用できるようになりました。リンク:https://suo.im/aWkTE

200元の罰金と100万元以上を没収 You Yuxi: 高品質の中国語文書の重要性 MuskのJDK 21用ハードコア移行サーバー Solon、仮想スレッドは信じられないほど素晴らしい! TCP 輻輳制御によりインターネットが節約される OpenHarmony 用の Flutter が登場 Linux カーネルの LTS 期間が 6 年から 2 年に復元される Go 1.22 で for ループ変数エラーが修正される Google は 25 周年を祝う Svelte は「新しい車輪」 - ルーンを構築
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4868096/blog/10112537