Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4736742
  • 博文数量: 206
  • 博客积分: 5240
  • 博客等级: 大校
  • 技术积分: 3224
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 21:40
文章分类

全部博文(206)

文章存档

2013年(13)

2012年(8)

2011年(33)

2010年(152)

我的朋友

分类:

2010-09-03 22:04:02

为了处理中文,对于类似下面函数,可能会取到半个汉字的情况,
substr = string.sub(str,i,[,j] );
substr = string.left(str,n);

有些语言增加了处理汉字的对应函数,形式类似下面,将一个汉字的长度也以1为单位
substr = string.subc(str,i,[,j] );
substr = string.leftc(str,n);

假如 :str="abc是英文字母,..."
想取6个字符"c是英文字母",下面只能取到"c是英"和半个汉字,
substr = string.sub(str,3,8 );
对于类似的问题,请教处理方法。
谢谢!

转换为table数组处理吧,string库的函数table里面很多都有类似的.
可以封装一个库.

//导入字符串扩展函数库
import string.ex

//将中文字符串转换为数组
tab = string.ex.totable("12在2a有bc中 文233" )

io.open()
for(i=1;#tab;1){
    
//显示第i个字符
    io.print( tab[ i ] ) 
}

//取i到j位置的字符
subtab = { table.unpack(tab,3,7) }


//数组转换为字符串
str = string.join( subtab)
io.print( str )
阅读(740) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~