TTMan
Messages postés104Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention12 février 2007
-
22 déc. 2005 à 17:07
TTMan
Messages postés104Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention12 février 2007
-
23 déc. 2005 à 13:01
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!
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 23 déc. 2005 à 12:05
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