似たような質問がありますが、これは少し違うと思います。
基本的に、次の文字列があるとします。
" aa{bb{dccd
"
ここで、最後のブレースで文字列を分割したいと思い{
ます。パーツを配列として返します。次を使用して、この文字の位置 (0 ベースのインデックス) を簡単に見つけることができますrindex
。
perl -e '
$aa="aa{bb{dccd" ;
$ri = rindex($aa, "{") ;
print "$ri\n"; '
5
...そして、私がPerlコーダーではないことを考えると、最初に考えるのは、のようなものを使用することです. 残念ながら、これは正しい構文ではありません$str = split($aa, 3)
split
。正規表現を最初の引数 (照合するもの) として取り、文字列を 2 番目の引数として取ります。また、整数の位置インデックスを引数として取りません。
Perl Guru Forums: Perl Programming Help: Intermediate: split or splice string on char count?のような投稿を見つけました。substr
、同様のコンテキストでの使用を推奨しています。ただし、substr
上記の例のように、リストに入力するには 2 つの s を記述する必要があるため、substr の代替案について聞きたいと思います。
基本的に、N番目の文字の位置を一致させる問題が正規表現の一致として表現できる場合、split
それも同様に機能する可能性があります-それが私の主な質問です. ただし、文字位置を指定する整数のリスト/配列を受け入れ、分割されたセクションを含む配列を返す Perl 組み込み関数があるかどうかも知りたいです。
編集:
上記を要約すると、デバッグ用に印刷したいので、文字インデックスが必要です。同時に、文字列を配列に分割するためにそれらを使用しますが、substr
s は使用しません。
EDIT2:OPから何かを省略したことに気づきました-つまり、私が取り組んでいる問題では、最初に文字インデックスを取得する必要があります(rindexまたはその他の方法で); 次に、それらに対して計算を行う必要があります (そのため、増加または減少する可能性があります)。その場合にのみ、(新しいインデックス値に基づいて) 文字列を分割する必要があります。私の元の例が単純すぎて、インデックス/文字位置に焦点を当てていることをあまり表現していなかったのかもしれません (そして、最初に考えたのはsplit
とにかく文字インデックスを暗示していることは言うまでもありませんが、それがどのプログラミング言語だったか思い出せません)。から:)
)