我希望能够将字符串中所有下划线替换为其后面字符的大写字母。例如:
是否有更简单的方法来实现这个功能呢?目前我使用了以下代码(假设输入中没有连续两个下划线):
最终,我认为我会选择Raj的实现方式,因为它非常简单易懂。
_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的实现方式,因为它非常简单易懂。