2

私はchar[]文字付きです。空白を削除したい。私のアプローチ:

import std.algorithm;
import std.ascii;
// ...
digits = remove!"isWhite(digits)"(digits);

しかし、これは機能しません:

c:\dmd2\windows\bin\..\..\src\phobos\std\functional.d(70): Error: static assert  "Bad unary function: isWhite(digits) for type dchar"

からすべての空白を削除するにはどうすればよいchar[]ですか?

4

2 に答える 2

4
import std.algorithm;
import std.stdio;
import std.uni;
import std.array;

void main() {

    char[] s = "12 abc fg ".dup;

    writeln(array(s.filter!(x => !x.isWhite)));
}

arrayResultの-returntype を取り除くために必要ですfilter。ただし、 を使用する場合は、その必要はありませんRanges

于 2012-06-17T10:43:57.303 に答える
2

より経済的なバージョン (メモリ割り当てを行わない) は、次のように std.algorithm.remove を使用することです (未テスト):

s = remove!isWhite(s);

remove を使用する最初の試みでは、文字列全体にラムダを使用しましたが、必要なのは 1 文字だけです。

于 2012-06-17T15:35:07.427 に答える