我想从字符串中删除所有下划线,下划线后面的字符为大写。因此,例如:_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;
}
关于c# - 将字符串中的字符替换为行中下一个的大写字母(Pascal 大小写),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260070/