我正在使用c#桌面应用程序替换我工作中使用的一些非常旧的c ++代码。 在c ++中,建立了一个命名约定,其中包括一些持久化对象名称中的智能编码(是的,不好,我知道但我无法改变它)。在旧代码中,如果名称字符串以数字开头,则使用不同类型的对象处理命名对象(仅限0-9,没有其他可能性,例如此处引用的波斯数字和&等等:{{3 }})。我知道有很多种方法可以确定这个,我只需要测试第一个角色,但我很好奇在这样的事情之间我有更好的选择
Regex reg = new Regex("[0-9]");
bool bdistinct = reg.IsMatch(objname.Substring(0,1));
和类似的东西
char k0 = objname.ToCharArray(0,1)[0];
bool bdistinct = ((k0>='0')&&(k0<='9'));
或者还有其他一些显而易见且简单明了的东西吗?
我不知道它是否有任何区别(我猜这是一个潜在的问题)但我不会在替换代码中的任何其他位置使用任何RegEx引用(到目前为止)简单的东西(使用的名称空间和引用很少)。
答案 0 :(得分:3)
char
比较将是最快的方式,请注意您可以直接从string
访问字符,以获得更清晰的代码:
char k0 = objname[0];
bool bDistinct = k0 >= '0' && k0 <= '9';
答案 1 :(得分:0)
试试这个
char k0 = objname[0];
int x = Int32.Parse(k0);
bool bDistinct = x >= 0 && x <= 9;
答案 2 :(得分:0)
确定某个字符是否为数字的最简单方法是调用Char.IsDigit。在您的代码中,那将是:
bool bdistinct = Char.IsDigit(objname[0]);