64

String 変数に解析可能な正の整数値が含まれているかどうかを知りたいだけです。今は値を解析したくありません。

現在私はやっています:

int parsedId;
if (
    (String.IsNullOrEmpty(myStringVariable) ||
    (!uint.TryParse(myStringVariable, out parsedId))
)
{//..show error message}

これは醜いです - どうすればもっと簡潔にできますか?

注:拡張メソッドについては知っていますが、組み込みの何かがあるのだろうか。

4

8 に答える 8

118

char.IsDigitを使用できます。

     bool isIntString = "your string".All(char.IsDigit)

true文字列が数値の場合に返されます

    bool containsInt = "your string".Any(char.IsDigit)

true文字列に数字が含まれている場合に返されます

于 2013-08-15T11:40:49.063 に答える
36

文字列内のすべての文字が数字であることを確認したい場合、Enumerable.All 拡張メソッドChar.IsDigit メソッドを次のように使用できます。

bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
于 2013-08-15T11:38:28.553 に答える
6

文字列に数字のみが含まれているかどうかを確認できます。

Regex.IsMatch(myStringVariable, @"^-?\d+$")

ただし、数値はそれより大きくてもInt32.MaxValue小さくてもInt32.MinValueかまいません。そのことを念頭に置いておく必要があります。

別のオプション - 拡張メソッドを作成し、醜いコードをそこに移動します。

public static bool IsInteger(this string s)
{
   if (String.IsNullOrEmpty(s))
       return false;

   int i;
   return Int32.TryParse(s, out i);
}

これにより、コードがよりクリーンになります。

if (myStringVariable.IsInteger())
    // ...
于 2013-08-15T11:38:54.530 に答える
4

質問がよくわかりませんでした。それで、このようなものは?

str.ToCharArray().Any(char.IsDigit);

それとも、追加の文字列なしで、値を完全に整数にする必要がありますか?

if(str.ToCharArray().All(char.IsDigit(c));
于 2013-08-15T11:38:45.437 に答える