lua中有这样一个库函数,string,find(),作用是在一个字符串中找到目标字符串的起始和结束位置(从1开始计数)

如:a,b=string.find("hello world","wo")//a==7,b==8

但是如果是这样呢:

a,b=string.find("我是大坏蛋","大坏蛋");

结果是:a=3,b=5吗?

嘿嘿,结果是a=5,=10.

原因是一个汉字使用2个字节表示的,比如“大坏蛋”即是6个字节。由于Lua使用2个字节表示一个汉字字符,所以总共可以表示出2^16=65536个汉字。这个数字已经完全够了,

1971年张其昀主编的《中文大辞典》,有49888 字,当代的《汉语大字典》(2010年版)收字60,370个,不过比起1994年中华书局、中国友谊出版公司出版的《中华字海》(收字85,568个)肯定是不够了,不过这是目前收字最多的汉语字典了。

有一点需要说明一下对于字符串"我是,大坏蛋!",里边的标点可以分为汉字标点和英文标点,汉字标点占2个字节,英文标点占1个字节。不过从观感来看,汉字标点确实比英文标点多占了一个字符位置。不过存贮中可没有存储那个多出来的空格。

lua中string.find()函数作用于汉字字符串的更多相关文章

  1. cocos2d-x 2.2.0 如何在lua中注册回调函数给C++

    cocos2d-x内部使用tolua进行lua绑定,但是引擎并没有提供一个通用的接口让我们可以把一个lua函数注册给C++层面的回调事件.翻看引擎的lua绑定代码,我们可以仿照引擎中的方法来做.值得吐 ...

  2. java中string.trim()函数的使用

    java中string.trim()函数的的作用是去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String ...

  3. Lua的string库函数、lua中string的模式匹配

    --****************Lua的string库函数****************** --1.string.byte --string.byte (s [, i [, j]]) --取出 ...

  4. lua中调用C++函数

    lua中调用C++函数 我们产品中提供了很多lua-C API给用户在lua中调用,之前一直没用深究其实现原理,只是根据已有的代码在编码.显然这不是一个好的习惯,没用达到知其所以然的目的. 一.基本原 ...

  5. 【转载】C#中string类使用Substring方法截取字符串

    在C#的字符串操作过程中,截取字符串是一种常见的字符串操作,可使用string类的Substring方法来完成字符串的截取操作,该方法支持设定截取的开始位置以及截取的字符串长度等参数,Substrin ...

  6. Torch-RNN运行过程中的坑 [2](Lua的string sub函数,读取中文失败,乱码?)

    0.踩坑背景 仍然是torch-rnn/LanguageModel.lua文件中的一些问题,仍然是这个狗血的LM:encode_string函数: function LM:encode_string( ...

  7. java中string.trim()函数的作用

    trim  /[trɪm] / 英文意思:整理,修理,修剪,整齐的 trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ Strin ...

  8. Lua中调用C函数

    Lua利用一个虚拟的堆栈来给C传递值或从C获取值.每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回 ...

  9. Lua中的常用函数库汇总

    lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...

随机推荐

  1. php的乱码问题

    $content=file_get_contents("http://www.ctsdc.com/");$pattern="/<a\s+href=.*<\/a ...

  2. css页面布局基础

    1.盒模型属性包括boder.margin.padding.width.height,这些属性可以使用快捷方式表示,顺序为上右下左,值之间用空格隔开. 2.使用clip和overflow属性时,pos ...

  3. SQL简介

    SQL 是用于访问和处理数据库的标准的计算机语言. 什么是 SQL? SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 的标准计算机语言 编者注:ANSI,美国国家标 ...

  4. 关于Action快捷键和小键盘的问题

    在使用全尺寸键盘的时候 键盘右边都有一排小键盘 但是这个小键盘的数字键值和普通键盘的数字键值是不一样的 在ANSI码里 标准数字键值是$30..$39, 而小键盘的键值是$60..$69 这样问题就来 ...

  5. 代理传值Delegate

    代理方法中加入参数:[delegate passMeToOther:(id)self]:把自己传给别人.

  6. Android开发之Intent略解

    Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件.通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意 ...

  7. java API 知识:截取特殊标识之前的字符串

    一: double a = 23.36; String b = String.valueOf(a); String d = b.substring(, b.lastIndexOf(".&qu ...

  8. 使用CMD命令设置IP

    使用CMD命令设置IP,将下面文本保存为bat文件后执行 netsh interface ip set address name="本地连接" source=static addr ...

  9. 【转】Ubuntu防火墙设置

    1.安装 sudo apt-get install ufw 2.启用 sudo ufw enable sudo ufw default deny 运行以上两条命令后,开启了防火墙,并在系统启动时自动开 ...

  10. eclipse闪退

    svn提交我的项目时,由于网络故障,提交不上去,一直checking.......,然后我强制关闭eclipse后重启,发现启动不了了,一点击,尝试打开的状态就突然没了,试了几次都这样,重启电脑打开还 ...