112 votes

Insère des espaces entre les mots sur un jeton à la chamelle

Y at-il une fonction intéressante pour transformer quelque chose comme

Prénom

pour ça:

Prénom?

188voto

magma Points 4410

Voir: .NET - Comment pouvez-vous scinder une chaîne délimitée par des "majuscules" en un tableau?

Notamment:

 Regex.Replace("ThisIsMyCapsDelimitedString", "(\\B[A-Z])", " $1")
 

136voto

ZombieSheep Points 18967

Voici une méthode d'extension que j'ai beaucoup utilisée pour ce genre de chose

 public static string SplitCamelCase( this string str )
{
    return Regex.Replace( 
        Regex.Replace( 
            str, 
            @"(\P{Ll})(\P{Ll}\p{Ll})", 
            "$1 $2" 
        ), 
        @"(\p{Ll})(\P{Ll})", 
        "$1 $2" 
    );
}
 

Il gère également des chaînes telles que "IBMMakeStuffAndSellIt" et le convertit en "IBM Make Stuff And Sell It" (IIRC).

7voto

Tim Cooper Points 55292

Vous pouvez utiliser une expression régulière:

 Match    ([^^])([A-Z])
Replace  $1 $2
 

Dans du code:

 String output = System.Text.RegularExpressions.Regex.Replace(
                  input,
                  "([^^])([A-Z])",
                  "$1 $2"
                );
 

3voto

jcolebrand Points 11824

L'approche de la force brute est susceptible d'être la meilleure approche.

 string output;
foreach( char caracter in input ){
    if ( caracter <= 90 && caracter >= 65 ){
        output += " ";
    }
    output += caracter;
}
return caracter;
 

1voto

Ryan Bennett Points 2602

Regex:

http://weblogs.asp.net/jgalloway/archive/2005/09/27/426087.aspx http://stackoverflow.com/questions/773303/splitting-camelcase

(probablement le meilleur - voir la deuxième réponse) http://bytes.com/topic/c-sharp/answers/277768-regex-convert-camelcase-into-title-case

Pour convertir de UpperCamelCase à Le titre est le Cas, utilisez cette ligne : Regex.Replace("UpperCamelCase",@"(\B[A-Z])",@" $1");

Pour convertir des deux lowerCamelCase et UpperCamelCase à Titre de Cas, l'utilisation MatchEvaluator : public string toTitleCase(m) { char c=m.Capture[0].La valeur[0]; return ((c>='a')&&(c<='z'))?Char.ToUpper(c).ToString():" "+c; } et de changer un peu votre regex avec cette ligne : Regex.Replace("UpperCamelCase ou lowerCamelCase",@"(\b[a-z]|\B[A-Z])" MatchEvaluator(toTitleCase));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X