5
我將如何改變字符串替換駝峯串用連字符的字符串
關於我們
要
關於美國
我會喜歡能夠用正則表達式替換,如果可能的話。 我已經試過:
public static string ToHypenCase(this string source) {
return Regex.Replace(source, @"[A-Z]", "-$1");
}
我將如何改變字符串替換駝峯串用連字符的字符串
關於我們
要
關於美國
我會喜歡能夠用正則表達式替換,如果可能的話。 我已經試過:
public static string ToHypenCase(this string source) {
return Regex.Replace(source, @"[A-Z]", "-$1");
}
你可以用正則表達式ToLower()
的組合並做到這一點,就像這樣:
string s = "quickBrownFoxJumpsOverTheLazyDog";
string res = Regex.Replace(s, @"([a-z])([A-Z])", "$1-$2").ToLower();
Console.WriteLine(res);
你可以改變你的擴展方法是這樣的:
public static string ToHypenCase(this string source)
{
var chars = source.ToList();
for (int i = 0; i < chars.Count -1; i++)
{
if (!char.IsWhiteSpace(chars[i]) && char.IsUpper(chars[i + 1]))
{
chars[i + 1] = char.ToLower(chars[i + 1]);
chars.Insert(i+1,'-');
}
}
return new string(chars.ToArray());
}
或者只是使用LINQ
:
var parts = "aboutUs".Select(x =>
{
if (char.IsUpper(x)) return "-" + char.ToLower(x);
return x.ToString();
});
var result = string.Join("", parts);