「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"、'-');