Saya menggunakan Java untuk mendapatkan String
input dari user. Saya mencoba untuk membuat huruf pertama dari masukan ini dikapitalisasi.
Saya mencoba ini:
String name;
BufferedReader br = new InputStreamReader(System.in);
String s1 = name.charAt(0).toUppercase());
System.out.println(s1 + name.substring(1));
yang menyebabkan ini kesalahan compiler:
Type mismatch: tidak dapat mengubah dari InputStreamReader untuk BufferedReader
Tidak memanggil toUppercase() pada tipe primitif char
String str = "java";
String cap = str.substring(0, 1).toUpperCase() + str.substring(1);
// cap = "Java"
Dengan anda contoh:
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// Actually use the Reader
String name = br.readLine();
// Don't mistake String object with a Character object
String s1 = name.substring(0, 1).toUpperCase();
String nameCapitalized = s1 + name.substring(1);
System.out.println(nameCapitalized);
}
Langkah 1:
Impor apache's umum lang perpustakaan dengan menempatkan ini dalam membangun.gradle
dependensi
compile 'org.apache.commons:commons-lang3:3.6'
Langkah 2:
Jika anda yakin bahwa string adalah semua kasus yang lebih rendah, atau semua yang anda butuhkan adalah untuk mengawali huruf pertama, langsung call
StringUtils.capitalize(yourString);
Jika anda ingin memastikan bahwa hanya huruf pertama dikapitalisasi, suka melakukan hal ini untuk enum
, menelepon toLowerCase()
pertama dan perlu diingat bahwa itu akan membuang NullPointerException
jika string masukan adalah nol.
StringUtils.capitalize(YourEnum.STUFF.name().toLowerCase());
StringUtils.capitalize(yourString.toLowerCase());
Berikut ini adalah beberapa contoh yang diberikan oleh apache. it's terkecuali gratis
StringUtils.capitalize(null) = null
StringUtils.capitalize("") = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"
Catatan:
WordUtils
juga termasuk dalam perpustakaan ini, tapi tak dipakai lagi. Silakan tidak gunakan itu.
Apa yang ingin anda lakukan mungkin adalah ini:
s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
(mualaf pertama char huruf besar dan menambahkan sisa string asli)
Juga, anda membuat sebuah stream masukan pembaca, tapi tidak pernah membaca setiap baris. Dengan demikian nama
akan selalu null
.
Ini harus bekerja:
BufferedReader br = new InputstreamReader(System.in);
String name = br.readLine();
String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
Java:
hanya penolong metode untuk memanfaatkan setiap string.
public static String capitalize(String str)
{
if(str == null) return str;
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
Setelah itu hanya panggilan str = memanfaatkan(str)
Kotlin:
str.capitalize()
Berikut solusi yang akan bekerja.
String A = "stackOverflow";
String ACaps = A.toUpperCase().charAt(0)+A.substring(1,A.length());
//Will print StackOverflow
Anda dapat't menggunakan toUpperCase() pada primitif char , tetapi anda dapat membuat seluruh String menjadi Huruf besar terlebih dahulu kemudian mengambil char pertama, kemudian untuk menambahkan ke substring seperti yang ditunjukkan di atas.
Apa tentang WordUtils.capitalizeFully()?
import org.apache.commons.lang3.text.WordUtils;
public class Main {
public static void main(String[] args) {
final String str1 = "HELLO WORLD";
System.out.println(capitalizeFirstLetter(str1)); // output: Hello World
final String str2 = "Hello WORLD";
System.out.println(capitalizeFirstLetter(str2)); // output: Hello World
final String str3 = "hello world";
System.out.println(capitalizeFirstLetter(str3)); // output: Hello World
final String str4 = "heLLo wORld";
System.out.println(capitalizeFirstLetter(str4)); // output: Hello World
}
private static String capitalizeFirstLetter(String str) {
return WordUtils.capitalizeFully(str);
}
}
Set string ke huruf kecil, kemudian mengatur Huruf pertama ke atas seperti ini:
userName = userName.toLowerCase();
kemudian untuk membesarkan huruf pertama:
userName = userName.substring(0, 1).toUpperCase() + userName.substring(1).toLowerCase();
substring hanya mendapatkan sepotong string yang lebih besar, maka kita menggabungkan mereka kembali bersama-sama.
Terpendek terlalu:
String message = "my message";
message = Character.toUpperCase(message.charAt(0)) + message.substring(1);
System.out.println(message) // Will output: My message
Bekerja untuk saya.
Di Android Studio
Tambahkan ketergantungan ini untuk anda membangun.gradle (Modul: aplikasi)
dependencies {
...
compile 'org.apache.commons:commons-lang3:3.1'
...
}
Sekarang anda dapat menggunakan
String string = "STRING WITH ALL CAPPS AND SPACES";
string = string.toLowerCase(); // Make all lowercase if you have caps
someTextView.setText(WordUtils.capitalize(string));
Anda juga dapat mencoba ini:
String s1 = br.readLine();
char[] chars = s1.toCharArray();
chars[0] = Character.toUpperCase(chars[0]);
s1= new String(chars);
System.out.println(s1);
Ini lebih baik(optimal) dibandingkan dengan menggunakan substring. (tapi tidak perlu khawatir tentang string kecil)
Anda dapat menggunakan substring()
untuk melakukan hal ini.
Tapi ada dua kasus yang berbeda:
Kasus 1
Jika String
anda memanfaatkan dimaksudkan untuk menjadi mudah dibaca, anda juga harus menentukan default locale:
String firstLetterCapitalized =
myString.substring(0, 1).toUpperCase(Locale.getDefault()) + myString.substring(1);
Kasus 2
Jika String
anda memanfaatkan dimaksudkan untuk menjadi mesin yang dapat dibaca, hindari menggunakan Lokal.getDefault()
karena string yang dikembalikan akan konsisten di seluruh daerah yang berbeda, dan dalam hal ini selalu menentukan lokal yang sama (misalnya, toUpperCase(Lokal.Bahasa INGGRIS)
). Ini akan memastikan bahwa string yang anda gunakan untuk proses internal yang konsisten, yang akan membantu anda menghindari sulit-untuk-menemukan bug.
Catatan: Anda tidak harus menentukan Lokal.getDefault()
untuk toLowerCase()
, karena hal ini dilakukan secara otomatis.
Use this utility method to get all first letter in capital.
String captializeAllFirstLetter(String name)
{
char[] array = name.toCharArray();
array[0] = Character.toUpperCase(array[0]);
for (int i = 1; i < array.length; i++) {
if (Character.isWhitespace(array[i - 1])) {
array[i] = Character.toUpperCase(array[i]);
}
}
return new String(array);
}
Ini hanya untuk menunjukkan kepada anda, bahwa anda tidak yang salah.
BufferedReader br = new InputstreamReader(System.in);
// Assuming name is not blank
String name = br.readLine();
//No more error telling that you cant convert char to string
String s1 = (""+name.charAt(0)).toUppercase());
// Or, as Carlos prefers. See the comments to this post.
String s1 = Character.toString(name.charAt(0)).toUppercase());
System.out.println(s1+name.substring(1));
Catatan: Ini adalah sama sekali bukan cara terbaik untuk melakukannya. Ini hanya untuk menunjukkan OP bahwa hal itu dapat dilakukan dengan menggunakan charAt()
juga. ;)
Ini akan bekerja
char[] array = value.toCharArray();
array[0] = Character.toUpperCase(array[0]);
String result = new String(array);
coba yang satu ini
Apa metode ini adalah bahwa, Mempertimbangkan kata "hello world" metode ini mengubahnya menjadi "Hello World" gunakan huruf besar pada awal setiap kata .
private String capitalizer(String word){
String[] words = word.split(" ");
StringBuilder sb = new StringBuilder();
if (words[0].length() > 0) {
sb.append(Character.toUpperCase(words[0].charAt(0)) + words[0].subSequence(1, words[0].length()).toString().toLowerCase());
for (int i = 1; i < words.length; i++) {
sb.append(" ");
sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase());
}
}
return sb.toString();
}