2016-11-20 2 views
-1

Как искать каждое строковое слово и изменять его, как показано ниже;Как использовать подстановки

set firstLibrary {12345} 
set secondLibrary {aghij} 

Примечания:

 
1=a ; 2=g ; 3=h ; 4=i ; 5=j 
set theString {44168} 

то выход; 44168 = iia68

+0

вопрос неясен, пожалуйста, добавить больше деталей – georoot

+2

Посмотрите на [строка карту] (http://www.tcl.tk/man/tcl8.6/TclCmd/string.htm#M34) в документация –

ответ

3

Что вам нужно сделать, так это собрать эти две библиотеки в карту, которую вы можете использовать с string map. Ключ к этому состоит в том, что вы можете использовать форму из двух списков: foreach, а команда split может легко разбить строку на свои символы компонента, если набор разделителей пуст.

set map {} 
foreach from [split $firstLibrary ""] to [split $secondLibrary ""] { 
    lappend map $from $to 
} 

Применив карту с string map к $theString и печать результат остается в качестве упражнения.

+0

Его отлично. Еще одно, как разбить строку на два слова из sttring. Например: {helloworlds} и вывод: он ll ow или ld s – Andre

+0

@Andre Это было бы что-то для regexp: 'regexp -all -inline {..?}" Helloworlds "' –

0

Как получить второе строковое значение, если первое такое же строковое значение, а затем вычислить средние значения, как указано ниже;

set first {A B B C D E E E E E G K} 
set second {12 42 51 66 24 75 33 11 22 86 43 66} 

set lenghtString [lenght $first] 

for {set i 0} {$i < $lenghtString} {incr i} { 
#arg please 
#If same string on first string then get second string 
    #B B = (42+51)/2 = 46.5 
    #E E E E E = (75+33+11+22+86)/5 = 45.4 
} 

output with puts by rows: 12 46.5 66 24 45.4 86 66 
Смежные вопросы