2016-11-20 2 views
-1

각 문자열 단어를 검색하고 아래와 같이 변경하는 방법;대체 문자 사용 방법

set firstLibrary {12345} 
set secondLibrary {aghij} 

비고 :

set theString {44168} 

후 출력된다

 
1=a ; 2=g ; 3=h ; 4=i ; 5=j 
; 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 
} 

$theStringstring map와지도를 적용하고 결과를 인쇄하는 운동으로 남아 있습니다.

+0

그것의 위대한. 한 번 더, 문자열에서 문자열 두 단어를 분리하는 방법. 예를 들면 : {helloworlds}이고 출력은 다음과 같습니다 : hel ow or 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