5
文字列を文字列に分割する最も簡単な方法は何ですか?たとえば、スペース上で分割して単語の配列を作る。文字列のすべての文字の配列を作ることさえできます。文字列をPostScriptの配列に分割する方法
私が考えることのできる唯一の方法は、ループ内でsearch
を使用することです。すべての言語にはこの目的のための機能があるので、私はPostScript
の機能が不足していると思います。
文字列を文字列に分割する最も簡単な方法は何ですか?たとえば、スペース上で分割して単語の配列を作る。文字列のすべての文字の配列を作ることさえできます。文字列をPostScriptの配列に分割する方法
私が考えることのできる唯一の方法は、ループ内でsearch
を使用することです。すべての言語にはこの目的のための機能があるので、私はPostScript
の機能が不足していると思います。
あなたはsearch
オペレータで正しい軌道に乗っています。文字列の検索とマッチングを行うのが目的です。
search string seek search post match pre true (if found)
string false (if not found)
looks for the first occurrence of the string seek within string and
returns results of this search on the operand stack. The topmost
result is a boolean that indicates if the search succeeded.
If search finds a subsequence of string whose elements are equal
to the elements of seek, it splits string into three segments:
pre, the portion of string preceding the match; match, the portion
of string that matches seek; and post, the remainder of string. It
then pushes the string objects post, match, and pre on the operand
stack, followed by the boolean true. All three of these strings are
substrings sharing intervals of the value of the original string.
If search does not find a match, it pushes the original string
and the boolean false.
Example:
(abbc) (ab) search ==> (bc) (ab) () true
(abbc) (bb) search ==> (c) (bb) (a) true
(abbc) (bc) search ==>() (bc) (ab) true
(abbc) (B) search ==> (abbc) false
%!
%(string) (delimiter) split [(s)(t)(r)(i)(n)(g)]
/split { % str del
[ 3 1 roll % [ str del
{ % [ ... str del
search { % [ ... post match pre
3 1 roll % [ ... pre post match %ie. [ ... pre str' del
}{ % [ ... str
exit % [ ... str %% break-from-loop
}ifelse
}loop % [ ...
] % [ ... ]
} def
(string of words separated by spaces)()split ==
%-> [(string) (of) (words) (separated) (by) (spaces)]
(string.of.words.separated.by.dots)(.)split ==
%-> [(string) (of) (words) (separated) (by) (dots)]
が、私はここに私の答えでは、ループ内の検索を使用しての例を持っている:ここでPostScript Language Reference Manualで見つかった
search
オペレータの概要ですhttp://stackoverflow.com/a/5846955/733077 –