Merhaba,
Aslında D'de bu konuda çok olanak var. Burada hangisi iyi diye tartışabiliriz. Benim bulabildiğim 2 olanak var ve ilki std.array'deki split:
import std.array;
int counter;
foreach(n; str.split!isWhite)
{
//if(n.length > 0)/*
if(!n.empty)//*/
{
n.writeln; //* 11 nonblank /
} else {
counter++;
}
}
counter.writeln; //* 8 blank /
Yapmak istediğim, tüm görünmez karakterleri filitrelemek; buna boşluklar dahil. Ama yukarda görüleceği üzere (döndürülen bir dizge dizisi: string[]) dizide boş elemanlar da (bu aşağıda vereceğim örnekte 8), dolu olan istediklerim de var. İstersem, yukardaki gibi yeni bir döngüye sokarak 2 şekilde (1. if'in solundaki işaretleri kaldırıp geçiş yapın: toggle) filitreleyebilirim ama esnek olması yanında daha yavaş olur sanki...
Ne dersiniz şağıdaki daha iyi olabilir mi?
import std.algorithm;
import std.uni : isWhite;
import std.stdio;
void main()
{
auto str = "\tBir Madde: \n"~
"Buraya uzun bir ara "~
"ve belki biraz daha yazmak";
str.splitter!isWhite.
filter!(a => a != "").writeln;
}