J'utilise une variable de type "string" en C# et j'aimerais la formatter en "Nom Propre", c'est à dire, une majuscule à chaque nouveau mot avec (ça serait le top) la possibilité d'exclure certains mots comme "le", "la", "de"....
Si quelqu'un a vu un bout de code sympa qui pourrais me mettre sur la voie ou carrément une classe de manipulation de string déjà bien aboutie, je suis preneur...
Merci!
d'ailleur, je viens de me rendre compte qu'il manque un truc dans mon code :
private string UpperCaseWordsInSentence(string sentence) {
StringBuilder ret = new StringBuilder();
StringCollection badWords = new StringCollection();
// c'est une bonne ide ca ;)
badWords.Add("le");
badWords.Add("la");
// etc...
Regex regex = new Regex(@"\w+");
// recherche tous les mots de la chaine
int index = 0;
foreach (Match m in regex.Matches(sentence))
{
ret.Append(sentence.Substring(index, m.Index - index));
if (badWords.Contains(m.Value.ToLowerInvariant()))
{
ret.Append(m.Value);
} else {
ret.Append(m.Value.Substring(0, 1).ToUpper());
ret.Append(m.Value.Substring(1).ToLower());
}
index = m.Index + m.Length;
}
ret.Append(sentence.SubString(index));
return ret.ToString();
}
le même code avec un for à la place du foreach :
private string UpperCaseWordsInSentence(string sentence) {
StringBuilder ret = new StringBuilder();
StringCollection badWords = new StringCollection(); // c'est une bonne ide ca ;)
badWords.Add("le");
badWords.Add("la");
// etc...
Regex regex = new Regex(@"\w+");
// recherche tous les mots de la chaine
int index = 0;
Match m;
MatchCollection matches = regex.Matches(sentence);
for (int i=0; i< matches.Count; i++)
{
m = matches[i];
ret.Append(sentence.Substring(index, m.Index - index));
if (badWords.Contains(m.Value.ToLowerInvariant()))
{
ret.Append(m.Value);
} else {
ret.Append(m.Value.Substring(0, 1).ToUpper());
ret.Append(m.Value.Substring(1).ToLower());
}
index = m.Index + m.Length;
}
ret.Append(sentence.SubString(index));
return ret.ToString();
}
StringCollection badWords =
new
StringCollection();
// c'est une bonne ide ca ;)
badWords.Add(
"le");
badWords.Add(
"la");
// etc...
Regex regex =
new
Regex(
@"\w+");
// recherche tous les mots de la chaine
int index = 0;
foreach (
Match m
in regex.Matches(sentence))
{
ret.Append(sentence.Substring(index, m.Index - index));
if (badWords.Contains(m.Value.ToLowerInvariant()))
{
ret.Append(m.Value);
}
else {
ret.Append(m.Value.Substring(0, 1).ToUpper());
ret.Append(m.Value.Substring(1).ToLower());
}
index = m.Index + m.Length;
}
return ret.ToString();
}
un exemple :
Bonjour!
J'Utilise Une Variable De Type "String" En C# Et J'Aimerais la Formatter En "Nom Propre", C'Est À Dire, Une Majuscule À Chaque Nouveau Mot Avec (Ça Serait le Top) la Possibilité D'Exclure Certains Mots Comme "le", "la", "De"....
Si Quelqu'Un A Vu Un Bout De Code Sympa Qui Pourrais Me Mettre Sur la Voie Ou Carrément Une Classe De Manipulation De String Déjà Bien Aboutie, Je Suis Preneur...
Merci