programing

Android 응용 프로그램에서 텍스트 뷰의 첫 글자를 대문자로 쓰는 방법

magicmemo 2023. 9. 13. 22:31
반응형

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 healthO/P로 Brain And Health

I/P brain's HealthO/P로 Brain's Health

I/P brain's Health and legO/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

반응형