2016-03-24 2 views
0

私はAppleScriptで数字の束をしようとしています。私はその言語にはとても新しいので、私はあなたに助けを求めると思った。AppleScriptで数字の山が並んでいます

私は私のテキストエディットファイルに次のようになり数字のグループがあります:私は必要なもの

v 0.186472 0.578063 1.566364 
v -0.186472 0.578063 1.566364 
v 0.335649 0.578063 1.771483 

が、それは次のように見せること、これらの番号を頼っスクリプトです:

(0.186472, 0.578063, 1.566364), 
(-0.186472, 0.578063, 1.566364), 
(0.335649, 0.578063, 1.771483), 

をだから各数字の後にカンマがなければならず、常に1行にある3つの数字をかっこ()に入れなければなりません。すべての行を削除しなければならない前に、3つの括弧で囲まれたグループの後に別のカンマがあり、vが最後になければなりません。

私は、これまで使用して、すべての「V」を取り除くことができた:

set stringToFind to "v" 
set stringToReplace to "" 

しかし、今は立ち往生イムと私は助けを願っています。

+0

こんにちは!コードサンプルをインデントまたはバッククォートで囲むことができれば、固定幅フォントで表示され、編集やコピー/貼り付けが簡単になります。スタックオーバーフローへようこそ! – Martin

+0

新しい質問には、追加質問があります。そこに尋ねて、ここで更新を削除してください。あなたが助けられるでしょう。このコメントは後で削除します。 –

答えて

0

AppleScriptの文字列を検索して置き換えるには、ネイティブの方法でtext item delimitersを使用してください。 text item delimiters,text itemsと文字列の連結を使用して、問題を解決できる固定数の値が空白(またはタブ)で区切られています。

文字列の前と後ろに追加改行を追加して、4語を含まない行が無視されることを示しました。

set theString to " 
v 0.186472 0.578063 1.566364 
v -0.186472 0.578063 1.566364 
v 0.335649 0.578063 1.771483 
" 
set theLines to paragraphs of theString 

set oldTIDs to AppleScript's text item delimiters 


repeat with i from 1 to count theLines 
    set AppleScript's text item delimiters to {space, tab} 
    if (count of text items of item i of theLines) = 4 then 
     set theNumbers to text items 2 thru -1 of item i of theLines 
     set AppleScript's text item delimiters to ", " 
     set item i of theLines to "(" & (theNumbers as string) & ")," 
    else 
     set item i of theLines to missing value 
    end if 
end repeat 

set theLines to text of theLines 
set AppleScript's text item delimiters to linefeed 
set newString to theLines as string 
set AppleScript's text item delimiters to oldTIDs 
return newString 
+0

ありがとうございます!魅力のように働く!しかし、私は小さな問題に遭遇したと思います。コードはすべての負の値を正として返すようです。私はそれが簡単な修正だと確信していますが、私のスキルは、問題を検出して解決するために制限されています。どんな助け? –

+0

私はポストJärvを更新しました。今は 'words'の代わりに' text items'を使っていて、負の値の先頭のハイフンを保持しています。 –

関連する問題