在写 lua debugger 的时候,我需要判断一个字符串的前缀是不是 "@" 。

有三个方案:

1.比较直观的是 string.sub(str,1,1) == "@"

2.感觉效率比较高的是 string.byte(str) == 64

3.或者是 string.find(str,"@") == 1

我推荐第三种。(注:在此特定运用环境下。因为用于判定 source 的文件名,大多数情况都是 @ 开头。如果结果为非,则性能较低)

第一方案 string.sub 会在生成子串的时候做一次字符串 hash ,感觉效率会略微低一些。

第二方案效率应该是最好,但是需要记住 @ 的 ascii 码 64 。如果前缀是多个字符也不适用。

性能对比测试:

复制代码 代码如下:

string.find(sb, "@") == 1 3.671

string.find(sb, "^@") ~= 1 3.735

string.byte(sa) == 64 2.14

string.char(string.byte(sb)) == "@" 4.375

string.sub(sb,1,1) == "@" 2.766

sb[1] == "@" 0.984

要想解决不以@开头时的性能问题,可以改成这样:

复制代码 代码如下:

string.find(str,"^@") == 1

lua判断字符不为空或空格_Lua判断字符串前缀是否为指定字符的3种方法相关推荐

  1. lua判断字符不为空或空格_Lua判断Table是否为空的方法(空的table即{})

    判断方法结论: 复制代码 代码如下: a={} if next(a) ~=nil then dosomething end 最近在项目里面大量使用的lua,其中lua的table是lua中重要的数据结 ...

  2. Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符

    Java:判断一个字符串中包含指定字符子串,判断一个字符串中存在指定字符 字符串的contains方法可以判断一个字符串中是否存在另一个字符子串,示例如下 String Str = "Hel ...

  3. 判断字符串中是否包含指定字符(JavaScript)

    判断字符串中是否包含指定字符 indexOf() indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则返回 -1. search() search( ...

  4. java 包含几个字符_java中如何判断一个字符串包含几个指定字符

    java中如何判断一个字符串包含几个指定字符 可以用String类里的indexOf(String s,int i)方法,这个方法s是字符串div,i是从i下标开始查找该字符串在调用字符串中的位置,返 ...

  5. 怎么判断文本框为空html,javascript如何判断输入框是否为空?

    我们经常要判断一个输入框中是否输入了内容,但是这里有一个问题,如果用户输入的是一个空格或者是一些其它空字符,这时如果不注意,就达不到要求了. JavaScript判断输入框是否为空: JS判断输入框的 ...

  6. php判断关联数组为空,php 关联数组判断是否为空

    php教程 $array = array(0); if(empty($array)){ echo "我空了 "; }else{ echo "我不空啊 "; } ...

  7. vue 判断json是否为空_vue.js怎么判断对象是否为空?

    vue.js怎么判断对象是否为空?下面本篇文章给大家介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. vue.js怎么判断对象是否为空? vue有两个方法可用 方法一:JSO ...

  8. java判断jsonobject是否为空_javascript中如何判断json是否为空呢?

    摘要: 下文讲述javascript中判断Json为空的方法分享,如下所示: json在web开发中必不可少,常常用于web的数据交换,那么在json中如何判断json对象是否为空呢? 1.jquer ...

  9. python查询字符串是否包含某字符串_python 判断检测字符串中是否包含指定字符或字符串(比如:?)...

    in: 10px auto; padding: 0px; color: rgb(17, 17, 17); font-family: Verdana, Arial, Helvetica, sans-se ...

最新文章

  1. 创业基础(第四章: 创业风险及识别与管理) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  2. 【ES6】 let与const详解
  3. winpcap 发送数据包
  4. (课程学习笔记)Python基础学习
  5. 云端的ABAP Restful服务开发
  6. jar包 jdk 停_一文读懂jar包的小秘密
  7. LeetCode-66. 托普利茨矩阵
  8. openwrt x86 登录不上_求助,关于OpenWRT外接硬盘不识别的问题
  9. RTMP流媒体播放过程
  10. C# 使用Process调用外部程序中所遇到的参数问题
  11. iview组件 eslint校验出错 Parsing error: x-invalid-end-tag
  12. 07.electron-(渲染进程和主进程)通信
  13. Linux下电子邮件服务器的配置与应用
  14. python网络数据采集2(译者:哈雷)
  15. 2022-2027年中国服装辅料行业市场全景评估及发展战略规划报告
  16. 阅读《吴军·硅谷来信》一年的回顾与思考
  17. VBA-关闭屏幕刷新
  18. 几行Python代码画皮卡丘
  19. 人工神经网络算法的应用,神经网络算法应用案例
  20. Linux操作系统安全(一)

热门文章

  1. css-第一个CSS
  2. kafkatemplate无法注入_Spring-Kafka(三)-KafkaTemplate发送消息及结果回调
  3. python删除excel内容_用python批量删除sheet
  4. cgi进程设置多少 宝塔_宝塔面板安装完的一些列操作
  5. c语言08,标准C语言08_01.doc
  6. gbase 8s oracle,GBase8s 查看数据库表空间信息
  7. qt使用样式表设置窗口widget为圆角
  8. 广播 消息 没有服务器,服务器节点消息广播
  9. js百度地图android定位不准,百度地图js定位不准
  10. c语言getch() 头文件,用getch()需要头文件吗?