在下面的代码中,为什么2给出输出而不是3?该removechars语句返回长度为0D2:条件语句中的空字符串
import std.stdio, std.string;
void main() {
string str = null;
if (str) writeln(1); // no
str = "";
if (str) writeln(2); // yes
if (",&%$".removechars(r"^a-z")) writeln(3); // no
}
编辑字符串:好吧,它可能会返回null,但我还是有点不解,因为所有这些打印真正
writeln(",&%$".removechars(r"^a-z") == "");
writeln(",&%$".removechars(r"^a-z") == null);
writeln(",&%$".removechars(r"^a-z").length == 0);
编辑2:这也打印真实的,但把其中任何一个条件,你会得到不同的结果
writeln("" == null);
编辑3:好吧,我明白,我不能测试一个空字符串我做的方式。导致这个问题的是以下情况。我想从一个字删除字符,但不希望存储空字符串:
if (auto w = word.removechars(r"^a-z"))
wordcount[w]++;
,当我尝试这工作,但一定是因为removechars是返回null,而不是“”
我认为'如果(阵列)'被改写为'如果(array.ptr!= NULL)'和'没有如果( array.length!= 0)'我不确定 – 2011-05-22 22:57:11