====== split ====== ===== C++ ===== // param type : String, xpeg::Element // return type : Iterator AnyPtr String::split(const AnyPtr& pattern) const; ===== Xtal ===== // param type : String, xpeg::Element // return type : Fiber String::split : method(pattern); ===== Description ===== //pattern//に与えたパターンで文字列を分割します。パターンには文字列の他、数値範囲、文字範囲など、XPEGの要素に変換可能な型ならば様々渡すことができます。 分割された断片が空文字になった際も取り除かれません。 C++ではIteratorを返し、XtalではFiberを返すので、結果の処理の仕方が少々異なることもありますが、[[..:Iterator]]クラスのメソッドを使う場合は同じように処理できます。 ===== Example1 ===== スペースで文字列を分割する ==== C++ ==== ==== Xtal ==== str : "10 20 30 40 50"; pattern : " "; splitedIter : str.split(pattern); // iterator[]は、Iteratorの派生クラスにおいて有効で、イテレート要素を配列に変換する //splitedIter[].p; list : splitedIter.filter(|x| x!="")[]; list.p; ==== Output ==== [10, 20, 30, 40, 50] ===== Example2 ===== スペースまたはカンマで文字列を分割する ==== C++ ==== ==== Xtal ==== str : "10,20 30 , 40, 50"; // pattern : " " | ","; // 本来うまくいくはずだが、ライブラリがtypoってて動かない pattern : xpeg::set(" ,"); splitedIter : str.split(pattern); list : splitedIter.filter(|x| x!="")[]; list.p; ==== Output ==== [10, 20, 30, 40, 50] ===== See Also ===== * [[..:xpeg]] * [[..:Iterator]]