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"

如何从 a 中删除所有空格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)));
}

array需要摆脱Result-returntype 的filter. 但是,如果您想使用Ranges.

于 2012-06-17T10:43:57.303 回答
2

更经济的版本(不进行内存分配)是像这样使用 std.algorithm.remove (未经测试):

s = remove!isWhite(s);

您最初使用 remove 的尝试对整个字符串使用了 lambda,但它只需要一个字符对应一个字符。

于 2012-06-17T15:35:07.427 回答