【问题标题】:How to use tolower in D如何在 D 中使用 tolow
【发布时间】:2019-04-03 08:41:20
【问题描述】:

我想把一个字符串的第一个字母在D中变成小写。

由于字符串在 D 中是不可变的,所以似乎没有一个简单的方法。

我想出了这个:

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

有没有更简单的方法?

【问题讨论】:

    标签: d phobos


    【解决方案1】:

    为了参考和完整性,您可以通过链接范围来构建它而无需任何分配。它具有处理空字符串的额外优点:

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

    Try online on run.dlang.io.

    【讨论】:

    • 我已经尝试过了,但它不适用于空字符串。 run.dlang.io/is/ksDBNT.
    • 抱歉,dropOne 强制要求该元素确实存在,这就是它不适用于空字符串的原因。更新了代码以使用 drop(1),它对空字符串基本上没有任何作用。
    【解决方案2】:

    虽然 D strings 是不可变的,但您可以使用 char[] 代替:

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

    【讨论】:

    • 什么是直观的? (以便我们向 D 开发者提出建议)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多