2014-03-26 9 views
5

Wie würde ich die Zeichenfolgemit einem Bindestrich Zeichenfolge

aboutUs

Um

about-us

ich ändern würde mag dies mit regex tun, wenn möglich ersetzen. Ich habe versucht:

public static string ToHypenCase(this string source) { 
    return Regex.Replace(source, @"[A-Z]", "-$1"); 
} 

Antwort

9

Sie es mit einer Kombination aus regex und ToLower(), wie dies zu tun:

string s = "quickBrownFoxJumpsOverTheLazyDog"; 
string res = Regex.Replace(s, @"([a-z])([A-Z])", "$1-$2").ToLower(); 
Console.WriteLine(res); 

Demo on ideone.

0

Sie Ihre Erweiterung Methode wie folgt ändern:

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()); 
} 

Oder verwenden Sie einfach LINQ:

var parts = "aboutUs".Select(x => 
     { 
      if (char.IsUpper(x)) return "-" + char.ToLower(x); 
      return x.ToString(); 
     }); 

var result = string.Join("", parts); 
Verwandte Themen