2016-09-16 3 views
0

에 나는 1 개 y1) 점과 (x2, y2의 분할 문자열 저장 값을 원하는 방식으로문자열 분할 저장 값은 TCL

다음
% set b [le::splitIntoBoxes $m1_drw -type maxX] 
{1.154 0.068 1.222 0.518} {1.154 0.518 1.370 0.562} 

에 나에게 문자열을 반환하는 기능을 가지고있다. 나는 모든 옵션 을 시도했지만 "\"그래서 1 개 y1) 점과 (x2, y2의 값을 저장할 수있는 문제를 내가 무시하고 싶은

% puts [regexp -all -inline {\S+} $b] 
\{1.154 0.068 1.222 0.518\} \{1.154 0.518 1.370 0.562\} 

를 해결할 수 없다.

+0

당신은 무엇을하려고 했습니까? –

+0

split {}이 (가) 작동하지 않았습니다. – user765443

+0

붙여 넣기는 어떻게하셨습니까? –

답변

3

문자열이 반환 된 것처럼 보이며이를 목록의 전체 목록으로 분석해야합니다. 그래서 예를 들면

:

foreach token $b { 
    foreach {x1 y1 x2 y2} $token {break;} 
    puts "x1 $x1 y1 $y2 x2 $x2 y2 $y2" 
} 

첫 번째 foreach는 '분할'공간에 덩어리의 문자열입니다. 이 같은 덩어리가보다

:

{1.154 0.068 1.222 0.518} 목록 자체가

, 두 번째 루프에서 당신이이리스트의 각 요소를 할당하는거야 귀하의 설계 변수.

+2

Tcl 8.5 이상에서는'lassign $ token x1 y1 x2 y2'를 사용하여 할당 할 수 있습니다. –

1

이 작업을 수행 할 수 있습니다

% proc mysplit d { 
    concat {*}$d 
} 
% set b {{1.154 0.068 1.222 0.518} {1.154 0.518 1.370 0.562}} 
{1.154 0.068 1.222 0.518} {1.154 0.518 1.370 0.562} 
% mysplit [mysplit $b] 
1.154 0.068 1.222 0.518 1.154 0.518 1.370 0.562