2014-12-05 4 views
0

Я кодирую iRule на нашем сервере F5, но я начинаю начинать, когда речь заходит о TCL.Сплит-строка в TCL

У меня есть HTTP::host переменных, которая содержит имя хоста в следующем формате: application-dev.com

Все, что я пытаюсь сделать, это разделить эту строку, в которой происходит дефис и установить первую и вторую секцию для разделения переменных. Так что я бы в конечном итоге с этим:

variable1 = application 
variable2 = dev.com 

Я получил это далеко:

set hostSections [split [HTTP::host] "-"] 

Но не могу найти какую-либо информацию о том, как присвоить секции отделить переменные

ответ

1

You можно использовать lindex (индекс списка) для старых версий Tcl:

set variable1 [lindex $hostSections 0] 
set variable2 [lindex $hostSections 1] 

Поскольку списки 0-indexed, 0 укажет первый элемент списка.

В Tcl 8.5 и более поздние версии можно использовать lassign, что делает вещи короче:

lassign [split [HTTP::host] "-"] variable1 variable2 

Оба способа сохраняет значение имен переменных variable1 и variable2.

+1

Для старых версий было также распространено злоупотребление foreach как lassign: 'foreach {var1 var2 var3} [split [HTTP :: host] -] {break}' – schlenk

+0

@schlenk Ничего, никогда не натолкнулся на это :) – Jerry

+0

@ShaneC Любое обновление об этом? – Jerry