TCL - разбить строку на произвольное количество пробелов в списке - PullRequest
4 голосов
/ 20 апреля 2011

Скажем, у меня есть такая строка:

set str "AAA    B C     DFG 142               56"

Теперь я хочу получить список следующим образом:

{AAA B C DFG 142 56}

Для этого я хочу использовать функцию разделения, ноВ этом случае я получаю несколько пустых списков {}.Как я могу получить список выше?

Ответы [ 4 ]

13 голосов
/ 20 апреля 2011
set text "Some arbitrary text which might include \$ or {"
set wordList [regexp -inline -all -- {\S+} $text]

См. Это: Разделение строки на слова .

6 голосов
/ 20 апреля 2011

Вы всегда можете сделать следующее:

set str "AAA    B C     DFG 142               56"
set newStr [join $str " "]

Будет выведено следующее:

{AAA B C DFG 142 56}
4 голосов
/ 20 апреля 2011

Модуль textutil :: split из tcllib имеет splitx процесс, который делает именно то, что вы хотите

package require textutil::split
set result [textutil::split::splitx $str]
1 голос
/ 07 июля 2016

Начиная с Tcl 8.5, также работает следующее:

list {*}$str

(при условии, что строка также является правильным списком, как в вопросе). Вывод желаемого списка.

Документация: список , {*} (синтаксис)

...