2013-12-03 3 views
0

У меня есть строка, как показано ниже:Создание строки из списка

(A-B,C&D-E,F,G&H-I,J,K); 

В строке выше я использовал раздвоение команду с «&» и получил следующие элементы:

(A-B,C); (D-E,F,G) ;(H-I,J,K); 

В приведенном выше элемент добавлен Z во втором элементе:

(A-B,C); (D-E,F,G,Z); (H-I,J,K); 

Теперь вы хотите восстановить строку в оригинале с z, добавленным fo Пример:

(A-B,C&D-E,F,G,Z&H-I,J,K); 

Просьба поделиться своими предложениями с благодарностями.

+0

ли исходная строка 'А-В, С и Д-Е, F, G и Н-I, J k' или у него есть круглые скобки и точка с запятой тоже? ** Будьте точны. ** Это влияет на точный ответ, который вы получаете. –

ответ

0

Ну, давайте предположим, что у вас есть три элемента в списке

puts $elements 
{(A-B,C);} {(D-E,F,G,Z);} {(H-I,J,K);} 

Прежде всего, давайте удалим ( и ); от каждого элемента

set trimmed [list] 

foreach e $elements { 
    lappend trimmed [string trim $e "();"] 
} 

Теперь Whe есть новый список:

puts $trimmed 
A-B,C D-E,F,G,Z H-I,J,K 

И наконец, давайте укажем join. список, используя & характер, и добавить снова ( перед результирующей строки и ); в конце:

set final ([join $trimmed &])\; 
puts $final 
(A-B,C&D-E,F,G,Z&H-I,J,K); 

Это должно быть все.

1
set s "(A-B,C&D-E,F,G&H-I,J,K);" 
set l [split $s "&"] 
lset l 1 "[lindex $l 1],Z" 
set new [join $l &] 
puts $new 
(A-B,C&D-E,F,G,Z&H-I,J,K); 
Смежные вопросы