来源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. 移动Web单页应用开发实践——页面结构化

    1. 前言 在开发面向现代智能手机的移动Web应用的时候,无法避免一个事实,就是需要开发单页应用(Single Page WebApp).对于不同的系统需求,单页应用的粒度会不同,可能是整个系统都使用 ...

  2. leveldb

    [LevelDB] LevelDB is a fast key-value storage library that provides an ordered mapping from string k ...

  3. Gradle 1.3之前的Publishing artifacts

    在Gradle1.3之前,Publishing artifacts是使用uploadConfigurationName来publish 声明artifacts是靠使用 build.gradle art ...

  4. 自己制作 SPx N合1 自动安装盘(x86)

    来处"xinso" 一.制作方法: 以技嘉和惠普为例作,其它的可以如法泡制及变通: 1.复制一份最常用的 OEM XP,例如技嘉,到D:\1TO2 2.在 D:\ 创造一个 HP ...

  5. Spring Boot 所提供的配置优先级顺序

    按照优先级从高到低的顺序,具体的列表如下所示. 命令行参数. 通过 System.getProperties() 获取的 Java 系统参数. 操作系统环境变量. 从 java:comp/env 得到 ...

  6. Codeforces 682 D. Alyona and Strings (dp)

    题目链接:http://codeforces.com/contest/682/problem/D 给你两个字符串,求两个字符串中顺序k个的相同子串 长度之和.(注意是子串) dp[i][j][k][0 ...

  7. 乱侃c++

    就在刚才我感觉c++真的好复杂,函数重载,多态,虚函数,虚函数表,模版,继承等一大坨东西好恶心,c++既然完全支持C语言,当然是把它的优缺点统统接下了,C语言中指针本身并不太难,是C语言的精华,当年刚 ...

  8. [Linux]常用命令与目录全拼

    命令缩写: ls:list(列出目录内容)cd:Change Directory(改变目录)su:switch user 切换用户rpm:redhat package manager 红帽子打包管理器 ...

  9. CENTOS LINUX查询内存大小、频率

    more /proc/meminfo dmidecode [root@barcode-mcs ~]# dmidecode -t memory linux下查看主板内存槽与内存信息 1.查看内存槽数.那 ...

  10. Vagrant 快速入门

    1. Vagrant功能: Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable virt ...