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