我有一个类似于“foo-bar----baz--biz”的字符串
消除无关紧要的重复字符(-
)并使字符串“foo-bar-baz-biz”最简单、最快捷的方法是什么?
我试过做类似的事情.Replace("--","-")
,但这似乎只能在某种程度上起作用。我必须在循环中运行它才能完全做到这一点,我知道有更好的方法。
最好的方法是什么?
尝试这个,
string finalStr = string.Join("-", x.Split(new[] { '-' }, StringSplitOptions.RemoveEmptyEntries))
如果将其转换为Extension method
static class StringExtensions
{
public static string RemoveExtraHypen(this string str)
{
return string.Join("-", str.Split(new []{'-'}, StringSplitOptions.RemoveEmptyEntries));
}
}
用法
private void SampleDemo()
{
string x = "foo-bar----baz--biz";
Console.WriteLine(x.RemoveExtraHypen());
}
试Regex
课
using System.Text.RegularExpressions;
string input = "foo-bar----baz--biz";
Regex regex = new Regex("\\-+");
string output = regex.Replace(input, "-");
非常简单的解决方案:)
private string RemoveDuplicates(string s, char toRemove)
{
if (s.Length <= 1) return s;
char s1,s2;
string result="";
result = s[0].ToString();
s1 = s[0];
for (int i = 0; i < s.Length-1; i++)
{
s2 = s[i + 1];
if ( s2.Equals(toRemove)&& s1.Equals(s2))
{
s1 = s[i];
continue;
}
result += s2.ToString();
s1 = s[i + 1];
}
return result;
}
string s = RemoveDuplicates("f---oo-bar----baz--biz", '-');