je dois changer le text = "font roboto regular" en Font Roboto Regular en xml lui-même, comment faire?
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:textSize="18sp"
Android:textColor="@Android:color/black"
Android:fontFamily="roboto-regular"
Android:text="font roboto regular"
Android:inputType="textCapWords"
Android:capitalize="words"/>
Vous pouvez utiliser ce code.
String str = "font roboto regular";
String[] strArray = str.split(" ");
StringBuilder builder = new StringBuilder();
for (String s : strArray) {
String cap = s.substring(0, 1).toUpperCase() + s.substring(1);
builder.append(cap + " ");
}
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(builder.toString());
Si quelqu'un cherche une façon kotlin
de le faire, le code devient très simple et beau.
yourTextView.text = yourText.split(' ').joinToString(" ") { it.capitalize() }
Essaye ça...
Méthode qui convertit la première lettre de chaque mot d'une chaîne en une lettre majuscule .
private String capitalize(String capString){
StringBuffer capBuffer = new StringBuffer();
Matcher capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString);
while (capMatcher.find()){
capMatcher.appendReplacement(capBuffer, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase());
}
return capMatcher.appendTail(capBuffer).toString();
}
Usage:
String chars = capitalize("hello dream world");
//textView.setText(chars);
System.out.println("Output: "+chars);
Résultat:
Output: Hello Dream World
Vous pouvez utiliser
Android:inputType="textCapSentences"
Android:capitalize="sentences"
Si votre texte est dynamique, alors
KOTLIN
val strArrayOBJ = "Your String".split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val builder = StringBuilder()
for (s in strArrayOBJ) {
val cap = s.substring(0, 1).toUpperCase() + s.substring(1)
builder.append("$cap ")
}
txt_OBJ.text=builder.toString()
Modification de la réponse acceptée pour nettoyer les lettres majuscules existantes et empêcher l'espace de fin laissé par la réponse acceptée.
public static String capitalize(@NonNull String input) {
String[] words = input.toLowerCase().split(" ");
StringBuilder builder = new StringBuilder();
for (int i = 0; i < words.length; i++) {
String Word = words[i];
if (i > 0 && Word.length() > 0) {
builder.append(" ");
}
String cap = Word.substring(0, 1).toUpperCase() + Word.substring(1);
builder.append(cap);
}
return builder.toString();
}
vous pouvez utiliser cette méthode pour le faire par programme
public String wordFirstCap(String str)
{
String[] words = str.trim().split(" ");
StringBuilder ret = new StringBuilder();
for(int i = 0; i < words.length; i++)
{
if(words[i].trim().length() > 0)
{
Log.e("words[i].trim",""+words[i].trim().charAt(0));
ret.append(Character.toUpperCase(words[i].trim().charAt(0)));
ret.append(words[i].trim().substring(1));
if(i < words.length - 1) {
ret.append(' ');
}
}
}
return ret.toString();
}
se référer this si vous voulez le faire en xml.
majuscule première lettre
Android:inputType="textCapWords"
capitalise le premier mot de la phrase:
Android:inputType="textCapSentences"
https://stackoverflow.com/a/1149869/2725203
Jetez un coup d'œil à ACL WordUtils.
WordUtils.capitalize ("votre chaîne") == "Votre chaîne"
Android:inputType="textCapWords"
Cela ne fonctionnera pas dans TextView
, qui est valide pour EditText
uniquement. il faut donc le faire manuellement.
Vous pouvez utiliser capitalizeFully pour que chaque mot commence par un capital.
Android:capitalize
est obsolète.
Suivez ces étapes:https://stackoverflow.com/a/31699306/4409113
- Appuyez sur l’icône de ‘Paramètres’ sur l’écran d’accueil de votre Lollipop Android Dispositif
- À l’écran ‘Settings’, faites défiler jusqu’à la section PERSONAL et appuyez sur la section «Langue et saisie».
- Dans la section "Langue et saisie", sélectionnez votre clavier (qui est marqué comme étant le clavier actuel).
- Maintenant, appuyez sur les "Préférences".
- Appuyez pour cocher la case 'Auto-capitalisation' pour l'activer.
Et puis ça devrait marcher.
Si ce n'était pas le cas, je préférerais le faire dans Java
.
Pour mettre chaque mot en majuscule dans une phrase, utilisez l'attribut ci-dessous en xml de ce textView particulier.
Android: inputType = "textCapWords"
Vous pouvez utiliser
private String capitalize(final String line) {
return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}
refer this Comment capitaliser le premier caractère de chaque mot d'une chaîne
Une autre approche consiste à utiliser la classe StringTokenizer
. La méthode ci-dessous fonctionne pour un nombre quelconque de mots dans une phrase ou dans la vue EditText. J'ai utilisé cela pour capitaliser le champ de noms complets dans une application.
public String capWordFirstLetter(String fullname)
{
String fname = "";
String s2;
StringTokenizer tokenizer = new StringTokenizer(fullname);
while (tokenizer.hasMoreTokens())
{
s2 = tokenizer.nextToken().toLowerCase();
if (fname.length() == 0)
fname += s2.substring(0, 1).toUpperCase() + s2.substring(1);
else
fname += " "+s2.substring(0, 1).toUpperCase() + s2.substring(1);
}
return fname;
}