2016-11-20 6 views
-1

Wie Sie jedes Zeichenfolgenwort suchen und wie unten ändern;So verwenden Sie Ersetzungen

set firstLibrary {12345} 
set secondLibrary {aghij} 

Bemerkungen:

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

dann die Ausgabe ist; 44168 = iia68

+0

Die Frage ist unklar, fügen Sie bitte weitere Details zu sehen – georoot

+2

Nehmen [string Karte] (http://www.tcl.tk/man/tcl8.6/TclCmd/string.htm#M34) in die Dokumentation –

Antwort

3

Sie müssen diese beiden Bibliotheken zu einer Karte zusammenstellen, die Sie mit string map verwenden können. Der Schlüssel dazu ist, dass Sie das Zwei-Listen-Formular von foreach verwenden können, und der split-Befehl kann einen String leicht in seine Komponentenzeichen aufteilen, wenn der Separatorsatz leer ist.

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

Anwendung der Karte mit string map auf $theString und das Ergebnis Druck wird als Übung.

+0

Es ist großartig. Noch eine, wie man eine Zeichenfolge zwei Wörter von der Zeichenfolge trennt. Zum Beispiel: {helloworlds} und Ausgabe ist: er wird oder ld s – Andre

+0

@Andre Das wäre etwas für regexp: 'regexp -all -inline {..?}" Helloworlds "' –

0

Wie erhalten Sie den zweiten String-Wert, wenn der erste String-Wert und berechnen Sie dann Durchschnittswerte wie folgt;

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