当前位置: 首页 > 编程笔记 >

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

公西永嘉
2023-03-14
本文向大家介绍Lua判断字符串前缀是否为指定字符的3种方法,包括了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

 类似资料:
  • 本文向大家介绍JavaScript判断一个字符串是否包含指定子字符串的方法,包括了JavaScript判断一个字符串是否包含指定子字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript判断一个字符串是否包含指定子字符串的方法。分享给大家供大家参考。具体分析如下: 下面的JS代码,为String对象定义了一个contains方法用于判断字符串是否包含子字符串,非常有

  • 检查给定的参数是否是一个字符串。 使用 typeof 来检查一个值是否为一个字符串。 const isString = val => typeof val === 'string'; isString('10'); // true

  • 本文向大家介绍Java判断字符串为空、字符串是否为数字,包括了Java判断字符串为空、字符串是否为数字的使用技巧和注意事项,需要的朋友参考一下 关于 String 的判空: 注:“==”比较两个变量本身的值,即两个对象在内存中的首地址。而“equals()”比较字符串中所包含的内容是否相同。第二种写法中,一旦 selection 真的为 null,则在执行 equals 方法的时候会直接报空指针异

  • Python3 实例 以下实例通过创建自定义函数 is_number() 方法来判断字符串是否为数字: 实例(Python 3.0+)# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com def is_number(s): try: float(s) return True except ValueErr

  • 本文向大家介绍Mysql字符串字段判断是否包含某个字符串的2种方法,包括了Mysql字符串字段判断是否包含某个字符串的2种方法的使用技巧和注意事项,需要的朋友参考一下 假设有个表: 初始化表,并添加些记录。     Mysql 中有些字段是字符串类型的,如何查找其中包含某些字符的记录呢? 方法一: 这样bb@email.com的用户也查出来了,不符合预期。 方法二: 利用mysql 字符串函数 f

  • 本文向大家介绍写一个方法判断字符串是否为回文字符串相关面试题,主要包含被问及写一个方法判断字符串是否为回文字符串时的应答技巧和注意事项,需要的朋友参考一下 https://leetcode-cn.com/problems/valid-palindrome/ 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: