2015-02-10 3 views

ответ

0
set ip "12345678910" 
set len [ string length $ip ] 
set str_start 0; #Start Index 
set str_end 3; #End Index 

for { set i 0 } { $str_start < $len } { incr i } { 
    #Appending it as 'list' 
    lappend list_result [ string range $ip $str_start $str_end ] 
    #Increasing the index values 
    incr str_start 4 
    incr str_end 4 
} 
puts $list_result 

Выход

1234 5678 910 
2

Как насчет:

regexp -all -inline {\d{1,4}} 12345678910 

Это возвращает список с каждым элементом, имеющим 4-х цифр, за исключением последнего, который может иметь меньше ...

1

Я обычно советую против использования regexp, но regexp -all -inline {\d{1,4}} 12345678910 как в Ответ капитана на самом деле может быть лучшим решением. Если символы не должны быть цифрами, regexp -all -inline {.{1,4}} 1a2b3c4d5e6 разрешит любой символ в строке.

Другим решением является использование lmap {a b c d} [split 12345678910 {}] {lindex $a$b$c$d}.

(Единственный аргумент-lindex вызов просто единична функци, то есть результат равен аргументу.)

Документация: lindex, lmap, regexp, split