在下面的代碼中,爲什麼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