来源http://codepad.org/BRHIS6WA

 --根据首字节获取UTF8需要的字节数
 local function GetUTF8CharLength(ch)
     local utf8_look_for_table = {
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
         , , , , , , , , , , , , , , , ,
     }
     return utf8_look_for_table[ch]
 end

 --根据UTF8流获取字符串长度
 --GetUTF8Length("一二三四五六七") 返回7
 local function GetUTF8Length(str)

     repeat
         local char = string.byte(str, ptr)
         local char_len = GetUTF8CharLength(char)
         len = len +
         ptr = ptr + char_len
     until(ptr>#str)
     return len
 end

 --截取UTF8字符串
 --SubUTF8String("一二三四五六七",1,3) 返回一二三
 local function SubUTF8String(str, begin, length)
     begin = begin
     length = length  --length为-1时代表不限制长度
     local ret = ""

     repeat
         local char = string.byte(str, ptr)
         local char_len = GetUTF8CharLength(char)
         len = len + 

          or len<begin+length) then
             ,char_len- do
                 ret = ret .. string.char( string.byte(str, ptr + i) )
             end
         end

         ptr = ptr + char_len
     until(ptr>#str)
     return ret
 end

 local function test(str, len)
     local ret = {}
     ,math.ceil(GetUTF8Length(str)/len) do
         ret[i] = SubUTF8String(str, (i-)*len + , len)
     end
     return ret
 end

 local str = "游戏程序员们是一群对技术最精益求精、心理素质最好、工作最勤奋的人!"
 ))do
 print(k,v)
 end
Output:

    游
    戏
    程
    序
    员
    们
    是
    一
    群
    对
    技
    术
    最
    精
    益
    求
    精
    、
    心
    理
    素
    质
    最
    好
    、
    工
    作
    最
    勤
    奋
    的
    人
    !

lua分割字符串终究版(转载,有改动)的更多相关文章

  1. lua分割字符串

    str = "abc;123;345" local tab = string.split(str, ";") 然后list里面就是 abc123345 了.第二 ...

  2. lua 分割字符串

    -- 参数:待分割的字符串,分割字符 -- 返回:子串表.(含有空串) function split(str, split_char) local sub_str_tab = {} while tru ...

  3. 【转载】C#使用Split函数根据特定分隔符分割字符串

    在C#程序开发过程中,很多时候可能需要将字符串根据特定的分割字符分割成字符或者List集合,例如根据逗号将字符串分割为数组,或者根据竖线将字符串分割成数组,C#中提供了Split()函数来快速将字符串 ...

  4. lua string的自定义分割字符串接口

    -------------------------------------------------------------------- --  Create By  SunC 2014/7/1 -- ...

  5. SQLServer实现split分割字符串到列

    网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题. 先贴上某大牛写的sp ...

  6. Python:笔记1_字符串处理【转载】

    [转载自:https://www.cnblogs.com/houht/p/3308634.html] 1. 判断字符串str是否为空Approach 1:如果字符串长度为0,说明字符串为空,code如 ...

  7. Chromium base库分割字符串SplitString

    前一段时间在工作过程中遇到一个场景需要将http response中的request header中的cookie字段取出并进行解析,但是手头没有解析cookie的工具类,同时cookie的表现就是个 ...

  8. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

  9. C语言分割字符串

    最近在做一道C语言题目的时候需要用到分割字符串,本来想自己手写的,也不会很麻烦,但想到其他语言都有分割字符串的库函数,C语言怎么会没有呢?所以,在网上搜了一搜,果然有这样的函数,还是很好用的,在此总结 ...

随机推荐

  1. SharePoint咨询师之路:备份和恢复系列三 - 备份web和服务应用程序

    本系列包括: 备份服务器场和配置 备份web和服务应用程序 备份内容数据库 备份网站集 备份自定义项 备份web应用程序和服务应用程序一样有三种方式:SharePoint管理中心网站.Windows  ...

  2. 第三百二十七天 how can I 坚持

    都没心情学习了,睡觉.太失败了.  好了,你赢了,最怕女人不说话了,我妈一生气就不说话,有点怕我妈,你想删就把我删了吧,我不怪你. 给你个善意的建议,任何事情都要有度,过犹而不及,你是属于那种比较听家 ...

  3. 理解js闭包(一)

    @(编程) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. ...

  4. poj 1564 Sum It Up (DFS+ 去重+排序)

    http://poj.org/problem?id=1564 该题运用DFS但是要注意去重,不能输出重复的答案 两种去重方式代码中有标出 第一种if(a[i]!=a[i-1])意思是如果这个数a[i] ...

  5. C#调用C++编写的dll库

    我用vs2008建的C++ dll类库,名字test_interopVC,和C#的CeshiVC项目 一:C++项目dll类库: 1.test_interopVC.h,主要简单的测试,所以就在一个类里 ...

  6. ASP.NET MVC- DropDownList绑定

    看一下Controller例子 [ChildActionOnly] public List<SelectListItem> LoadItemStatus() { List<Selec ...

  7. Toast在关闭应用后还显示的解决办法

    1.我们在用Toast的用法就是:Toast.makeText(Context,CharSequence , Duration).show().但有的时候如果你在一次操作当中多次点击一个view的时候 ...

  8. application与cache

    每个项目都有一些全局,常用的信息,而这些信息如果在每次使用时都载入,那必将耗费很大的资源,特别是对访问压力大的系统.因此,这个情况中,把这些全局信息放到缓存中是很必要的,放在缓存中可以使得数据能够很快 ...

  9. 标准Dispose实现 (转)

      需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源 ...

  10. C#实现Combobox自动匹配字符

    不多说了,如图,应客户要求,下拉框中需要自动匹配字符,可能有些人一早就对此很熟,但相对于我还是首次使用,还是花了一点时间,现记录下来,也希望能帮助大家更好的理解. 首先要设定Combobox的Drop ...