Lua判断字符串前缀是否为指定字符的3种方法

 更新时间:2015年04月22日 11:57:14   投稿:junjie  
这篇文章主要介绍了Lua判断字符串前缀是否为指定字符的3种方法,本文还对三种方法分别做了性能测试,需要的朋友可以参考下

在写 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中的基本语法、控制语句总结

    这篇文章主要介绍了Lua中的基本语法、控制语句总结,本文总结了赋值、局部变量与块、控制结构、数字型for、泛型for等内容,需要的朋友可以参考下
    2014-09-09
  • 在Lua程序中使用MySQL的教程

    在Lua程序中使用MySQL的教程

    这篇文章主要介绍了在Lua程序中使用MySQL的教程,是Lua入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Lua中的函数精讲笔记

    Lua中的函数精讲笔记

    这篇文章主要介绍了Lua中的函数精讲笔记,本文讲解了函数的用途、可变参数函数、闭包、非全局函数等内容,需要的朋友可以参考下
    2015-04-04
  • lua日志文件处理代码

    lua日志文件处理代码

    本文给大家分享的是使用lua编写的日志文件的处理代码,非常的简单实用,有需要的小伙伴可以参考下。
    2015-09-09
  • Lua基础教程之表(Table)学习笔记

    Lua基础教程之表(Table)学习笔记

    这篇文章主要介绍了Lua基础教程之表(Table)学习笔记,本文来自个人总结,需要的朋友可以参考下
    2014-09-09
  • Lua语言新手简单入门教程

    Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-03-03
  • Lua面向对象编程之基础结构table简例

    Lua面向对象编程之基础结构table简例

    今天小编就为大家分享一篇关于Lua面向对象编程之基础结构table简例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Lua读取和写入文件处理例子

    Lua读取和写入文件处理例子

    这篇文章主要介绍了Lua读取和写入文件处理,本文直接给出实例代码,需要的朋友可以参考下
    2014-11-11
  • lua 判断字符串是否包含指定字符的方法

    lua 判断字符串是否包含指定字符的方法

    在Lua中,如果你想判断一个字符串是否包含特定的子字符串(例如 a),你可以使用 string.find 函数,这篇文章主要介绍了lua 判断字符串是否包含指定字符,需要的朋友可以参考下
    2024-03-03
  • Lua中的协同程序之resume-yield间的数据返回研究

    Lua中的协同程序之resume-yield间的数据返回研究

    这篇文章主要介绍了Lua中的协同程序之resume-yield间的数据返回研究本文讲解了resume的参数、resume函数的第二个返回值、yield的返回值等内容,需要的朋友可以参考下
    2014-09-09

最新评论