[已解决]如何将一行文本按照字符占位来分割成数行?
本帖最后由 ioripalm 于 2013-8-26 16:55 编辑有一串长文本(字符串),只有一行,穿插着数字,英文,中文,空格。也就是中间没有任何换行符(记事本打开如果没有勾选自动换行就会显示很长的一行),现在我想按照每160个占位符来插入一个换行符,160个是我数出来的,一个英文和数字占一个位置,空格也是一个位置,中文是2个位置。
在记事本里面,将记事本窗口宽度调节到何时大小的时候,正好可以切割这个长文本为我要的文本格式。
我试了AU3的StringMid函数,纯英文数字的行参数160个字符就可以正好达到我的要求,但是遇到有中文的行,160个字符又多了。
有没有什么办法可以分割这行文本?
有点像下面的结构:
竖着看 如果横 不知道 大致的
这段文 着看这 我这么 机构就
字才会 段文字 说大家 像这个
有效果 很难懂 明白吗 样子的
如果没有换行符的话,就是这样:
竖着看 如果横 不知道 大致的这段文 着看这 我这么 机构就字才会 段文字 说大家 像这个有效果 很难懂 明白吗 样子的
以上是纯中文和空格,而且每个位置的中文都是3个字,实际情况是字母,数字,中文,空格混杂,而且字数不一样多,字母数字符号都是半角的!
感谢A大,每次都能解决我的问题! 40个位置,咋么就160个字符正好呢? 你的意思是不是要每40个字符分割换行$Test = StringRegExpReplace($str, '(.{40,}?)', "'$1'&@CRLF", 0) 本帖最后由 ioripalm 于 2013-8-25 13:30 编辑
回复 2# afan
不好意思,我说的40个位置,是说我文本切割后的效果,第一行的40的前40个字符和第二行的前40个字符,再加上第三行前40个,第四行前40个,这4段排整齐了竖着看正好是一段可读的文字
有点像下面的结构:
竖着看 如果横 不知道 大致的
这段文 着看这 我这么 机构就
字才会 段文字 说大家 像这个
有效果 很难懂 明白吗 样子的
如果没有换行符的话,就是这样:
竖着看 如果横 不知道 大致的这段文 着看这 我这么 机构就字才会 段文字 说大家 像这个有效果 很难懂 明白吗 样子的 回复 3# lpxx
我试了以160个字符换行一次,纯英文数字的时候没问题,因为每个英文和数字都只占一个位置也只占一个字符,但是遇到中文,也是占一个位置,但是中文占2个字符,所以这行如果中文越多,分割的效果就惨 Func _LineSplit($Str, $iNum = 40)
Return StringReplace(StringRegExpReplace(StringRegExpReplace($Str, '(?=[^\x00-\xff])', ChrW(27)), '.{1,' & $iNum & '}', '$0' & @CRLF), ChrW(27), '')
EndFunc ;==>_LineSplit 回复 6# afan
太复杂了,能给解释一下吗?新手看不懂啊! Local $Str = '竖着看 如果横 不知道 大致de这1段W 着看这 我这么 机构就字才会 段文字 说大家 像这个有效果 很难懂 明白ma 样子DE' & @CRLF
MsgBox(0, '原字符串', $Str)
MsgBox(0, '分行', _LineSplit($Str, 64))
Func _LineSplit($Str, $iNum = 40)
Return StringReplace(StringRegExpReplace(StringRegExpReplace($Str, '(?=[^\x00-\xff])', ChrW(27)), '.{1,' & $iNum & '}', '$0' & @CRLF), ChrW(27), '')
EndFunc ;==>_LineSplit 本帖最后由 netegg 于 2013-8-26 00:31 编辑
这段只能用正则快了,中间的空格数不一样 学习了,谢谢分享·· 只能感慨能人异士的强大
页:
[1]