Android 응용 프로그램에서 텍스트 뷰의 첫 글자를 대문자로 쓰는 방법
저도 textInput을 말하는 것이 아닙니다.즉, 텍스트 보기에 정적 텍스트(데이터베이스 호출에서 사용자 입력 데이터로 채워짐)가 있는 경우( 대문자가 아닐 수 있음), 해당 텍스트가 대문자인지 확인하려면 어떻게 해야 합니까?
감사합니다!
안드로이드나 TextView 특정한 것이 아닌 표준 자바 문자열 조작을 통해 이것을 달성할 수 있을 것입니다.
다음과 같은 경우:
String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();
이를 달성할 수 있는 수많은 방법이 있겠지만 말입니다.문자열 설명서를 참조합니다.
편집한 나는 추가했습니다..toLowerCase()
다음은 TextView에 적용되지 않지만 EditText와 함께 작동합니다. 그런 경우에도 setText()로 로드된 텍스트가 아니라 키보드에서 입력한 텍스트에 적용됩니다.좀 더 구체적으로 설명하자면, 키보드의 캡을 켜고, 사용자는 이를 마음대로 무시할 수 있습니다.
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()));
코틀린은 그냥 전화해요
textview.text = string.capitalize()
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
return sb.toString();
그래들에서 아파치 커먼즈 랭을 추가할 수 있습니다.compile 'org.apache.commons:commons-lang3:3.4'
그리고 사용.WordUtils.capitalizeFully(name)
향후 방문자를 위해 Import(최상의 IMHO)도 할 수 있습니다.WordUtil
부터Apache
그리고 당신의 앱에 많은 유용한 방법들을 추가합니다, 예를 들어,capitalize
다음과 같이
저는 일을 하지 않습니다.
기능:
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
이것이 당신에게 도움이 되기를 바랍니다.
Kotlin의 경우 형식이 "Aaaaaaaaa"인지 확인하려면 다음을 사용할 수 있습니다.
myString.toLowerCase(Locale.getDefault()).capitalize()
수락된 답변은 좋으나 안드로이드에서 textView에서 값을 얻기 위해 사용하는 경우 문자열이 비어 있는지 확인하는 것이 좋습니다.문자열이 비어 있으면 예외가 발생합니다.
private String capitizeString(String name){
String captilizedString="";
if(!name.trim().equals("")){
captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
}
return captilizedString;
}
참고로 코틀린의.capitalize()
지역 친화적이지 않기 때문에 1.5에서 더 이상 사용되지 않습니다.사용하는 것이 좋습니다..replaceFirstChar()
Android Studio에서 경고합니다.
기본 로케일을 암시적으로 사용하는 것은 버그의 일반적인 원인입니다.대문자(Locale)를 대신 사용합니다.내부 문자열의 경우 Local을 사용합니다.ROOT, 그렇지 않으면 Local.getDefault()입니다.
오토픽스가 내장된 덕분에 이 확장기능을 만들었습니다.
fun String.titlecase(): String =
this.replaceFirstChar { // it: Char
if (it.isLowerCase())
it.titlecase(Locale.getDefault())
else
it.toString()
}
코틀린 확장자 추가
fun String.firstCap()=this.replaceFirstChar { it.uppercase() }
유스케이스
"lowercase letter".firstCap() //gives "Lowercase letter"
사용자 지정 텍스트 보기를 만들어 사용하십시오.
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);
}
}
여기에 저는 안드로이드에서 문자열 첫 글자 대문자화라는 여러 옵션이 있기 때문에 이 주제에 대해 자세한 기사를 작성했습니다.
자바의 문자열 첫글자 대문자 표기법
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;
}
코틀린의 문자열 첫글자 대문자 표기법
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 또는 EditText를 XML로 설정할 수 있습니다.
android:inputType="textCapSentences"
Composition을 's Jetpack Composition 하는 를 해야 해야 를 하는 String.capitalize(locale: Locale)
과 같이과 에 에 과
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
아래의 물건을 사용함으로써
android:inputType="textCapSentences|textCapWords"
이런 코드 라인들이 저를 도와줬습니다.
String[] message_list=message.split(" ");
String full_message="";
for (int i=0; i<message_list.length; i++)
{
StringBuilder sb = new StringBuilder(message_list[i]);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
full_message=full_message+" "+sb;
}
textview_message.setText(full_message);
Android XML에서는 데이터 바인딩을 사용할 수 있습니다.
에서 된 에서 활성화된 build.gradle
:
android {
buildFeatures {
dataBinding = true
}
}
XML로부터 데이터 바인딩을 생성하는 데 사용할 수 있으며 간단한 코드 문을 허용합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="java.util.Locale"/>
</data>
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/role"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text='@{ user.role != null ? user.role.substring(0, 1).toUpperCase(Locale.getDefault()) + user.role.substring(1) : "n/a" }'
android:gravity="center_vertical"
android:textSize="12sp"/>
</androidx.appcompat.widget.LinearLayoutCompat>
</layout>
물론 코틀린이나 JetPack Composes 클래스를 수입할 수도 있습니다.
//Capitalize the first letter of the words
public String Capitalize(String str) {
String[] arr = str.split(" "); //convert String to StringArray
StringBuilder stringBuilder = new StringBuilder();
for (String w : arr) {
if (w.length() > 1) {
stringBuilder.append(w.substring(0, 1).toUpperCase(Locale.US) + w.substring(1).toLowerCase(Locale.US) + " ");
}
}
return stringBuilder.toString().trim();
}
fun TextView.capitalizeWords() {
text = text.split(" ").joinToString(" ") { it.replaceFirstChar { char -> char.uppercaseChar() } }
}
2023년 6월 업데이트, 이 확장자 사용
fun String.toTitleCase() = replaceFirstChar { text -> if (text.isLowerCase()) text.titlecase(
Locale.getDefault()) else text.toString() }
코틀린 사용:
textview.text = string.replaceFirstChar(Char::uppercase)
언급URL : https://stackoverflow.com/questions/3419521/how-to-capitalize-the-first-letter-of-text-in-a-textview-in-an-android-applicati
'programing' 카테고리의 다른 글
유연한 배열 부재로 구조를 초기화하는 방법 (0) | 2023.09.13 |
---|---|
펫클리닉보다 더 큰 오픈소스 스프링 샘플 프로젝트가 있습니까? (0) | 2023.09.13 |
ORDER BY 절을 사용하거나 사용하지 않는 파티션에 대한 분석 카운트 (0) | 2023.09.13 |
#로 재미있는 표기법 (0) | 2023.09.13 |
Python 인메모리 캐시(수명 연장) (0) | 2023.09.13 |