变量中的tcl长度

变量中的tcl长度,tcl,textutils,Tcl,Textutils,如何始终在50个字符之后拆分变量中的文本 那么splitt只在50个字符后的新行中出现吗 set length [::textutil::adjust $text -length 50 -strictlength true] 问候 编辑: 输入是变量$Plot中的文本 LaRochelle, a former pirate captain, is caught by the British. To get his ship back, he works as a spy against ot

如何始终在50个字符之后拆分变量中的文本

那么splitt只在50个字符后的新行中出现吗

set length [::textutil::adjust $text -length 50 -strictlength true]
问候

编辑:

输入是变量$Plot中的文本

LaRochelle, a former pirate captain, is caught by the British. To get his 
ship back, he works as a spy against other pirates, first of all Blackbeard 
and Providence. He works on some ships, crossing the Caribbean sea, with the 
intention


set pieces [regexp -all -inline {.{1,50}} $Plot]
set 0 [lindex [lindex $pieces 0] 0]
set 1 [lindex [lindex $pieces 1] 1]
putnow "PRIVMSG $channel :$0"
输出仅为:

<testbot> LaRochelle,
<testbot> British.
LaRochelle,
英国的。

不幸的是,不再..

您可以使用
regsub
在每50个字符后添加换行符

set text [string repeat 123456 48]
set formatted [regsub -all {.{50}} $text "&\n"]
puts $formatted

您可以使用
regsub
在每50个字符后添加一个换行符

set text [string repeat 123456 48]
set formatted [regsub -all {.{50}} $text "&\n"]
puts $formatted

最简单的方法是使用
regexp-all-inline
进行拆分,因为它有一个所有匹配(以及子匹配,如果存在)的列表,这意味着它可以非常直接地提供所需的结果:

set pieces [regexp -all -inline {.{1,50}} $inputString]
RE是
{1,50}
(大括号;在Tcl中技术上不需要,但几乎总是一个好主意),这意味着“一到五十个字符,尽可能多(因为贪婪匹配)”,我们可以得到尽可能多的字符



如果要约束到单词边界,最好将RE更改为
\m.{1,50}\m

最简单的方法是使用
regexp-all-inline
进行拆分,因为它有一个所有匹配(以及子匹配(如果存在))的列表,这意味着它可以非常直接地提供所需的结果:

set pieces [regexp -all -inline {.{1,50}} $inputString]
RE是
{1,50}
(大括号;在Tcl中技术上不需要,但几乎总是一个好主意),这意味着“一到五十个字符,尽可能多(因为贪婪匹配)”,我们可以得到尽可能多的字符



如果您想约束到单词边界,最好将RE改为
\m.{1,50}\m

这是下一行中唯一的拆分吗?对的我需要它在变量中,它不再直接在每个变量后面。中间还有其他东西,这只在下一行分开?对的我需要它在变量中,它不再直接在每个变量后面。当你有一个列表时,你可以用
foreach
[join$pieces”\n]
在元素文本之间用换行符创建一个字符串。一旦你有了一个列表,你可以用
foreach
[join$pieces”\n]在上面迭代
在元素文本之间创建一个带换行符的字符串。您可以得到所需的内容。调用
regexp
将文本分成几个50个字符的部分。然后你在第一篇文章中要求第一项,得到“LaRochelle”,在第二篇文章中要求第二项,得到“British”。你还期待什么吗?是的,0-50件,不仅仅是拉罗切拉,这是11件,其余的呢?50件是这样的:LaRochelle,一位前海盗船长,通过查看
Pieces
变量中的内容,或者分别使用
lindex$Pieces 0
lindex$Pieces 1
表达式被抓获
lindex$pieces 0
例如给你
LaRochelle,一位前海盗船长,被
抓获,因为这是
pieces
列表中的第一项,因为
pieces
是你文本中的片段列表,每个片段最多50个字符。哦,thx,我知道你现在得到了你想要的了。调用
regexp
将文本分成几个50个字符的部分。然后你在第一篇文章中要求第一项,得到“LaRochelle”,在第二篇文章中要求第二项,得到“British”。你还期待什么吗?是的,0-50件,不仅仅是拉罗切拉,这是11件,其余的呢?50件是这样的:LaRochelle,一位前海盗船长,通过查看
Pieces
变量中的内容,或者分别使用
lindex$Pieces 0
lindex$Pieces 1
表达式被抓获
lindex$pieces 0
举例来说,给你
LaRochelle,一位前海盗船长,被
抓获,因为这是
pieces
列表中的第一项,因为
pieces
是你文本中的片段列表,每个片段长达50个字符。哦,我明白了