Как использовать Tolower в D - PullRequest
1 голос
/ 03 апреля 2019

Я хочу поместить первую букву строки в нижний регистр в D.

Поскольку строка является неизменяемой в D, похоже, простого способа не существует.

Я придумал это:

string mystr = "BookRef";
string outval = toLower( mystr[0..1] ) ~ mystr[1..$]; 
writeln( "my outval: ", outval );

Есть ли более простой способ?

Ответы [ 2 ]

5 голосов
/ 03 апреля 2019

Для справки и полноты вы можете построить это без каких-либо распределений по цепочкам диапазонов. Имеет дополнительные преимущества работы с пустыми строками:

auto downcase(string w)
{
    import std.range, std.uni;
    return w.take(1).asLowerCase.chain(w.drop(1));
}

Попробуйте онлайн на run.dlang.io .

1 голос
/ 03 апреля 2019

Пока D string s являются неизменяемыми, вы можете использовать char[] вместо:

char[] mystr = "BookRef".dup; // .dup to create a copy
mystr[0] = toLower(mystr[0..1])[0];
writeln("my outval: ", mystr);
...