web-dev-qa-db-ja.com

C#では、文字列に整数が含まれているかどうかを確認する方法は?

文字列変数解析可能な要素を含む正の整数値かどうかを知りたいだけです。今は値を解析したくありません。

現在私はやっています:

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

これはい-より簡潔にする方法

注:拡張メソッドについては知っていますが、組み込みのものがあるかどうか疑問に思います。

32
Marcel

答えはjust no。のようです

他にも多くの良い答えがありますが、それらは単にjustさを隠している(私はそれを求めていませんでした)か、新しい問題を導入します(エッジケース)。

3
Marcel

char.IsDigit を使用できます。

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

文字列が数値の場合、trueを返します

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

文字列に数字が含まれる場合、trueを返します

51
DGibbs

文字列内のすべての文字が数字であることを確認したい場合、次のように Enumerable.All Extension MethodChar.IsDigit Method を使用できます。

bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
26
dtb

たぶんこれは助けることができます

string input = "hello123world";
bool isDigitPresent = input.Any(c => char.IsDigit(c));

msdn からの回答。

7
panako

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

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

ただし、数値はInt32.MaxValueより大きくても、Int32.MinValueより小さくてもかまいません。そのことに留意してください。

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

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

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

これにより、コードがよりきれいになります。

if (myStringVariable.IsInteger())
    // ...
5

これは私のために働きます。

("your string goes here").All(char.IsDigit)
2
sarmad salik

ごめんなさい、あなたの質問は全く得られませんでした。こんな感じ?

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

または、追加の文字列なしで、値は完全に整数でなければなりませんか?

if(str.ToCharArray().All(char.IsDigit(c));
2
SBoss