Nee*_*pta 5 .net c# regex linq string
这是一个采访问题 - 如何使用单个字符有效地修剪字符串中的重复字符.
示例:假设这是输入字符串
"reeeturrrnneedd"
输出应该是:
"回"
我通过使用拆分字符串和循环遍历char数组来解释它,但是面试官并不相信答案说这不是有效的方法.
private void test()
{
string s = "reeeturrrnneeddryyf";
StringBuilder sb = new StringBuilder();
char pRvChar = default(char);
foreach (var item in s.ToCharArray())
{
if (pRvChar == item)
{
continue;
}
pRvChar = item;
sb.Append(pRvChar);
}
MessageBox.Show(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)
然后我想到Linq对象和使用不同但它会给出不正确的输出,因为它删除所有重复的字符和输出将是"retund"
有人能告诉我更有效的方法吗?
这是一个正则表达式的解决方案:
Regex regex = new Regex( "(.)\\1+" );
string result = regex.Replace( s,"$1" );
Run Code Online (Sandbox Code Playgroud)
我不确定,如果在执行时间方面这比你的'for'循环更有效,但它在开发人员工作方面更有效率.并且易于阅读,至少对于熟悉正则表达式的人来说.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |