1. ホーム
  2. java

[解決済み] Javaで文字列を等しい長さの部分文字列に分割する。

2022-05-17 09:20:40

質問

文字列を分割する方法 "Thequickbrownfoxjumps" を同じ大きさの部分文字列に分割する方法。 例 "Thequickbrownfoxjumps" のように、4つの同じ大きさの文字列が出力されるはずです。

["Theq","uick","brow","nfox","jump","s"]

類似の質問です。

Scalaで文字列を同じ長さの部分文字列に分割する。

どのように解決するのですか?

正規表現のワンライナー版です。

System.out.println(Arrays.toString(
    "Thequickbrownfoxjumps".split("(?<=\\G.{4})")
));

\G はゼロ幅のアサーションで、前のマッチが終了した位置とマッチします。 もし があった場合 がない場合は、入力の先頭にマッチします。 \A . 囲んでいるルックビハインドは、最後にマッチした部分の終わりから4文字後の位置にマッチします。

lookbehindと \G はどちらも高度な正規表現機能で、すべてのフレーバーでサポートされているわけではありません。 さらに \G はサポートしているフレーバー間で一貫して実装されているわけではありません。 このトリックは、(例えば) Java やPerl、.NET、JGSoftでは動作しますが PHP (PCRE), Ruby 1.9+, TextMate (いずれも鬼ぐるま) にはありません。 JavaScriptの /y (スティッキーフラグ) は \G のような柔軟性はなく、JSがlookbehindをサポートしていたとしても、この方法は使えません。

私は、必ずしも を推奨しているわけではありません。

を必ずしも推奨するものではないことを述べておきます。 他の回答にある非再現性の解決策は長いかもしれませんが、自己文書化されていますし、これは単に の反対です。 という感じです。)

また、これはAndroidでは動作せず、Androidではサポートされていない \G の使用をサポートしていません。