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

reference/string/split.txt · 最終更新: 2011/07/04 15:15 by sukai
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0