tommyyu 发表于 2022-1-25 21:27:25

关于isdecimal()、isdigit()、isnumeric()的效率问题

isdecimal()、isdigit()、isnumeric()都是判断字符串是否为数字构成的字符串方法。区别如下(小甲鱼视频里有):
                                                                  | isdecimal()的返回值| isdigit() 的返回值| isnumeric()的返回值|
+----------------------------------------------------------+--------------------------+---------------------+-------------------------|
|判断由数字组成的字符串 (例:"123")               |             True            |          True          |            True         |
+----------------------------------------------------------+--------------------------+----------------------+------------------------|
|判断由2等符号组成的字符串(例:"22")             |            False            |          True         |             True         |
+----------------------------------------------------------+--------------------------+----------------------+------------------------|
|判断由罗马数字组成的字符串(例:"ⅠⅡⅢ")    |             False            |          False      |            True         |
+----------------------------------------------------------+--------------------------+---------------------+-------------------------|
|判断由汉字组成的字符串(例:"一壹")         |         False             |          False         |         True            |
+----------------------------------------------------------+-------------------------+---------------------+-------------------------+
isdecimal()只判断数字, isdigit()判断数字和特殊的数字(如2),isnumeric()判断数字和不同语言的字符。直觉上来讲,执行效率应该是isdecimal()最快,isdigit()其次,isnumeric()最慢,但结果恰恰相反
请问有人能解释一下么

阿奇_o 发表于 2022-1-25 21:27:26

首先,这种简单的"字符判断"基本不会有太大的效率差异,并且你这里只是这样简单测试也不完全有说服力。所以个人认为用不着深究,只要目的达到,用哪个都行。

又或者,可以大概推测猜想一下:这里面包含若干个if判断,所以影响效率的主要因素是 要判断的字符 要经过多少个if判断,才被检测出来。

其次,真要深究可以自己找源码看。

qwb1997 发表于 2022-1-25 22:45:26

实践出真知

tommyyu 发表于 2022-1-26 15:17:01

阿奇_o 发表于 2022-1-26 11:29
首先,这种简单的"字符判断"基本不会有太大的效率差异,并且你这里只是这样简单测试也不完全有说服力。所以 ...

关键是我不想看源码{:10_256:}

tommyyu 发表于 2022-1-27 11:40:44

tommyyu 发表于 2022-1-26 15:17
关键是我不想看源码

{:10_279:}
页: [1]
查看完整版本: 关于isdecimal()、isdigit()、isnumeric()的效率问题