我也不是指textInput。我的意思是,一旦你在TextView中有静态文本(从数据库调用填充到用户输入的数据(可能不是大写)),我怎样才能确保它们被大写?
谢谢!
答案 0 :(得分:138)
我应该能够通过标准的java字符串操作来实现这一点,没有特定的Android或TextView。
类似的东西:
String upperString = myString.substring(0,1).toUpperCase() + myString.substring(1);
虽然可能有一百万种方法可以实现这一目标。请参阅String文档。
答案 1 :(得分:60)
android:inputType="textCapSentences"
或
TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
这将填写第一个字母。
或
compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)
tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));
答案 2 :(得分:17)
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
return sb.toString();
答案 3 :(得分:6)
您可以添加Apache Commons Lang
在Gradle中,如compile 'org.apache.commons:commons-lang3:3.4'
并使用WordUtils.capitalizeFully(name)
答案 4 :(得分:2)
对于将来的访问者,您还可以(最好的恕我直许)从WordUtil
导入Apache
并为您的应用添加许多有用的方法,例如capitalize
,如下所示:
How to capitalize the first character of each word in a string
答案 5 :(得分:2)
对于Kotlin,如果要确保格式为“ Aaaaaaaaa”,则可以使用:
myString.toLowerCase(Locale.getDefault()).capitalize()
答案 6 :(得分:1)
请创建自定义TextView并使用它:
public class CustomTextView extends TextView {
public CapitalizedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setText(CharSequence text, BufferType type) {
if (text.length() > 0) {
text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
}
super.setText(text, type);
}
}
答案 7 :(得分:1)
对我来说,没有工作:
<强>功能:强>
private String getCapsSentences(String tagName) {
String[] splits = tagName.toLowerCase().split(" ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < splits.length; i++) {
String eachWord = splits[i];
if (i > 0 && eachWord.length() > 0) {
sb.append(" ");
}
String cap = eachWord.substring(0, 1).toUpperCase()
+ eachWord.substring(1);
sb.append(cap);
}
return sb.toString();
}
<强>结果:强>
I / P brain
O / P 大脑
I / P Brain and Health
O / P Brain And Health
I / P brain And health
至 O / P Brain And Health
I / P brain's Health
至 O / P Brain's Health
I / P brain's Health and leg
至 O / P Brain's Health And Leg
希望这会对你有所帮助。
答案 8 :(得分:1)
对于Kotlin,只需致电
textview.text = string.capitalize()
答案 9 :(得分:0)
可接受的答案很好,但是如果您使用它从android中的textView获取值,则最好检查字符串是否为空。如果字符串为空,则将引发异常。
private String capitizeString(String name){
String captilizedString="";
if(!name.trim().equals("")){
captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
}
return captilizedString;
}
答案 10 :(得分:0)
由于我们有多个选择,Capitalize First Letter of String in Android
Java中首字母大写的方法
public static String capitalizeString(String str) {
String retStr = str;
try { // We can face index out of bound exception if the string is null
retStr = str.substring(0, 1).toUpperCase() + str.substring(1);
}catch (Exception e){}
return retStr;
}
在Kotlin中大写字符串首字母的方法
fun capitalizeString(str: String): String {
var retStr = str
try { // We can face index out of bound exception if the string is null
retStr = str.substring(0, 1).toUpperCase() + str.substring(1)
} catch (e: Exception) {
}
return retStr
}
使用XML属性
或者您可以在TextView或XML中的EditText中设置此属性
android:inputType="textCapSentences"
答案 11 :(得分:0)
对于使用 Jetpack Compose 的用户,您应该使用 Compose 的 String.capitalize(locale: Locale)
,而不是 Kotlin 的,如下所示:
import androidx.compose.ui.text.capitalize
import androidx.compose.ui.text.intl.Locale
Text("my text".capitalize(Locale.current)) // capitalizes first letter
Text("my text".toUpperCase(Locale.current)) // all caps
答案 12 :(得分:0)
请注意 Kotlin 的 .capitalize()
is deprecated as of 1.5,因为它不是语言环境友好的。建议使用 .replaceFirstChar()
Android Studio 警告我
<块引用>隐式使用默认语言环境是错误的常见来源:请改用大写(语言环境)。对于内部使用的字符串,使用 Locale.ROOT,否则使用 Locale.getDefault()。
感谢内置的autofix,我做了这个扩展功能
fun String.titlecase(): String =
this.replaceFirstChar { // it: Char
if (it.isLowerCase())
it.titlecase(Locale.getDefault())
else
it.toString()
}
答案 13 :(得分:0)
fun String.firstCap()=this.replaceFirstChar { it.uppercase() }
"lowercase letter".firstCap() //gives "Lowercase letter"