c# - 将字符串中的字符替换为行中下一个的大写字母(Pascal 大小写)

标签 c# string replace replacewith

我想从字符串中删除所有下划线,下划线后面的字符为大写。因此,例如:_my_string_ 变为:MyString 同样:my_string 变为 MyString

有没有更简单的方法呢?我目前有以下内容(假设没有输入有两个连续的下划线):

        StringBuilder sb = new StringBuilder();
        int i;
        for (i = 0; i < input.Length - 1; i++)
        {
            if (input[i] == '_')
                sb.Append(char.ToUpper(input[++i]));
            else if (i == 0)
                sb.Append(char.ToUpper(input[i]));
            else
                sb.Append(input[i]);
        }
        if (i < input.Length && input[i] != '_')
            sb.Append(input[i]);

        return sb.ToString();

现在我知道这并不完全相关,但我想对答案中提供的实现运行一些数字,这里是使用字符串的 1000000 次迭代 的每个实现的结果(以毫秒为单位) :“_my_string_121_a_”:

Achilles: 313
Raj: 870
Damian: 7916
Dmitry: 5380
Equalsk: 574

使用方法:

        Stopwatch stp = new Stopwatch();
        stp.Start();
        for (int i = 0; i < 1000000; i++)
        {
            sb = Test("_my_string_121_a_");
        }
        stp.Stop();
        long timeConsumed= stp.ElapsedMilliseconds;

最后我想我会选择 Raj 的实现,因为它非常简单易懂。

最佳答案

这必须使用 ToTitleCase 来完成使用 System.Globalization 命名空间

static string toCamel(string input)
{        
    TextInfo info = CultureInfo.CurrentCulture.TextInfo;
    input= info.ToTitleCase(input).Replace("_", string.Empty);
    return input;
} 

enter image description here

关于c# - 将字符串中的字符替换为行中下一个的大写字母(Pascal 大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260070/

相关文章:

c# - aspose.word 仅返回第一个表和部分

string - 通过 bash 在 SIFT 上的 "match"循环中连接超过 4 个字符串

javascript - javascript 中的 DOT. 文件?这是什么意思?

java - 替换java中的某些固定字符串

c# - 快速高效的更新程序

c# - 解析 XML 文件 - 选项?

c# - 在 C# 中避免 Azure DocumentDB 中的任务取消异常

regex - 如何用R中的 "something plus special characters"替换许多特殊字符

javascript - 如何使用 jquery 将字符串数据替换为另一个字符串数据?

python - 用python中字符串中的另一个单词替换单词