つまり :
1231 YES
121.1241 NO
121,1241 NO
-121 NO
124a NO
C# で高速化するにはどうすればよいですか?
int x;
if (int.TryParse(str, out x) && x > 0)
数字のみが含まれているかどうかを確認できます。
if (theString.All(Char.IsDigit))
実際に解析する代わりに、文字列が空ではなく、数字のみを含むかどうかを確認することもできます。許可する場合は、必要に応じて先頭に+
符号を付けます。
これは範囲チェックを行わないことに注意してint
くださいlong
。
そのために正規表現、または場合によってはLINQを使用できます。
var nonNegative = text.Length > 0 && text.All(c => c >= '0' && c <= '9');
(これは Guffa のChar.IsDigit
アプローチに似ていますが、ASCII 数字に制限されています。Unicode には多数の非 ASCII 数字があります。)
これにより、正の値だけでなく、非負の値に制限されることに注意してください。「0」と「0000」をどのように扱いたいですか?