2016-09-13 113 views
0

tcl에서 두 문자열을 연결 한 다음 '_'과 같은 원치 않는 문자가 있으면 연결 문자열을 자릅니다. 문자열은 tcl 변수에 저장되며 내가 직면하는 문제는 "$str1_$str2"과 같은 두 문자열을 연결해야한다는 것입니다. 기본적으로 두 문자열 사이에 '_'으로 두 문자열을 결합하십시오. 나는 아래와 같이 그것을하는 방법을 발견했다. 이 아래로 나에게 outString의 값을 제공tcl에서 두 문자열 연결하기

set str1 "mystring1"; #string 1 
    set str2 "mystring2"; #string 2. This string could be Empty String as well. 

    set outString [append outString "_" $str2]; 
    set outString [string trimright '_']; 

: 내 작업을 달성하기 위해 더욱 최적화 된 방법을 찾고 있어요

puts $outString; 
    mystring1_mystring2 #if $str2 is not empty 
    mystring1    #if $str2 is empty. 

. 나는 단순히

set outString "$str1_$str2" 

같은 두 문자열을 결합하려고하지만 변수 이름의 '_'밑줄이 될 수 부분 때문에 "$ str1_ 같은 그런 변수"와 같은 오류가 발생합니다.

의견을 보내 주시면 감사하겠습니다.

답변

4

변수를 문자열로 삽입 할 때 중괄호를 사용하여 변수 이름을 보호 할 수 있습니다.

set str1 "mystring1"; 
set str2 "mystring2"; 
set outString "${str1}_${str2}" 

(같은 구문은 Perl로, 쉘 스크립트에서 작동하고, 아마 다른 스크립트 언어.)

하지만 이것은 "더 최적화"append 호출이되고 의지하지 않을 것입니다. IMHO는 읽기 쉽지만이 방법은 그렇게할만한 충분한 이유입니다. 그러나 측정하기 전까지는 더 빠르다고 가정하지 마십시오.

참조 : http://www.tcl-lang.org/man/tcl8.6/TclCmd/Tcl.htm#M12

+1

중괄호? 그건 [Tcl (n)] (http://www.tcl-lang.org/man/tcl8.6/TclCmd/Tcl.htm#M12)에 있습니다. –

+0

@DonalFellows : 감사합니다. –