7

つまり :

1231 YES
121.1241 NO
121,1241 NO
-121 NO
124a NO

C# で高速化するにはどうすればよいですか?

4

3 に答える 3

19
int x;
if (int.TryParse(str, out x) && x > 0)
于 2012-04-15T13:01:25.330 に答える
9

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

if (theString.All(Char.IsDigit))
于 2012-04-15T13:06:48.417 に答える
5

実際に解析する代わりに、文字列が空ではなく、数字のみを含むかどうかを確認することもできます。許可する場合は、必要に応じて先頭に+符号を付けます。

これは範囲チェックを行わないことに注意してintくださいlong

そのために正規表現、または場合によってはLINQを使用できます。

var nonNegative = text.Length > 0 && text.All(c => c >= '0' && c <= '9');

(これは Guffa のChar.IsDigitアプローチに似ていますが、ASCII 数字に制限されています。Unicode には多数の非 ASCII 数字があります。)

これにより、正の値だけでなく、非負の値に制限されることに注意してください。「0」と「0000」をどのように扱いたいですか?

于 2012-04-15T13:06:36.963 に答える