xML自体でtext = "font roboto regular"をFont Roboto Regularに変更する必要があります。
<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"/>
このコードを使用できます。
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());
kotlin
これを行う方法を探している人がいれば、コードは非常にシンプルで美しいものになります。
yourTextView.text = yourText.split(' ').joinToString(" ") { it.capitalize() }
これを試して...
文字列内の各Wordの最初の文字を大文字に変換するメソッド。
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();
}
使用法:
String chars = capitalize("hello dream world");
//textView.setText(chars);
System.out.println("Output: "+chars);
結果:
Output: Hello Dream World
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()
既存の大文字をすべて消去し、受け入れられた回答が残した後のスペースを防ぐための受け入れられた回答の変更。
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();
}
このメソッドを使用してプログラムで実行できます
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();
}
this を参照します(xmlで実行する場合)。
最初の文字を大文字にする
Android:inputType="textCapWords"
文の最初の単語を大文字にする:
Android:inputType="textCapSentences"
https://stackoverflow.com/a/1149869/27252
ACL WordUtilsをご覧ください。
WordUtils.capitalize( "your string")== "Your String"
Android:inputType="textCapWords"
これはTextView
では機能しません。これはEditText
でのみ有効です。手動で行う必要があります。
capitalizeFully を使用して、各Wordを大文字で開始できます。
Android:capitalize
は非推奨です。
次の手順に従ってください:https://stackoverflow.com/a/31699306/440911
- Android Lollipop Deviceのホーム画面で[設定]のアイコンをタップします
- [設定]画面で、[個人]セクションまで下にスクロールし、[言語と入力]セクションをタップします。
- [言語と入力]セクションで、キーボード(現在のキーボードとしてマークされている)を選択します。
- 「設定」をタップします。
- 「自動-大文字」をタップして有効にします。
そして、それは動作するはずです。
そうでない場合は、Java
でそれを行います。
文の各Wordを大文字にするには、その特定のtextViewのxmlで以下の属性を使用します。
Android:inputType = "textCapWords"
使用できます
private String capitalize(final String line) {
return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}
これを参照してください 文字列内の各単語の最初の文字を大文字にする方法
別のアプローチは、StringTokenizer
クラスを使用することです。次のメソッドは、文またはEditTextビュー内の任意の数の単語に対して機能します。これを使用して、アプリのフルネームフィールドを大文字にしました。
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;
}