Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中大写字符串的第一个字母?_Java_String_Capitalize - Fatal编程技术网

如何在Java中大写字符串的第一个字母?

如何在Java中大写字符串的第一个字母?,java,string,capitalize,Java,String,Capitalize,我使用Java从用户那里获取字符串输入。我正在尝试将此输入的第一个字母大写 我试过这个: String name; BufferedReader br = new InputStreamReader(System.in); String s1 = name.charAt(0).toUppercase()); System.out.println(s1 + name.substring(1)); 这导致了以下编译器错误: 类型不匹配:无法从InputStreamReader转换为Buf

我使用Java从用户那里获取
字符串
输入。我正在尝试将此输入的第一个字母大写

我试过这个:

String name;

BufferedReader br = new InputStreamReader(System.in);

String s1 = name.charAt(0).toUppercase());

System.out.println(s1 + name.substring(1));
这导致了以下编译器错误:

  • 类型不匹配:无法从InputStreamReader转换为BufferedReader

  • 无法对原语类型char调用toUppercase()

以你的例子:

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);
}

from。

from。

使用。

您想要做的可能是:

s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
(将第一个字符转换为大写,并添加原始字符串的其余部分)

另外,您创建了一个输入流读取器,但从未读取任何行。因此,
name
将始终为
null

这应该起作用:

BufferedReader br = new InputstreamReader(System.in);
String name = br.readLine();
String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
您也可以尝试以下方法:

 String s1 = br.readLine();
 char[] chars = s1.toCharArray();
 chars[0] = Character.toUpperCase(chars[0]);
 s1= new String(chars);
 System.out.println(s1);

这比使用子字符串更好(优化)。(但不用担心小字符串)

这只是为了告诉你,你没有错

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));

注意:这根本不是最好的方法。这只是为了向OP展示,它也可以使用
charAt()
来完成

可以使用
substring()
执行此操作

但有两种不同的情况:

案例1

如果要大写的
字符串
是可读的,则还应指定默认区域设置:

String firstLetterCapitalized = 
    myString.substring(0, 1).toUpperCase(Locale.getDefault()) + myString.substring(1);
案例2

如果大写的
字符串是机器可读的,请避免使用
Locale.getDefault()
,因为返回的字符串在不同的区域不一致,在这种情况下,请始终指定相同的区域设置(例如,
toUpperCase(Locale.ENGLISH)
)。这将确保用于内部处理的字符串是一致的,这将帮助您避免难以发现的bug

注意:您不必为
toLowerCase()
指定
Locale.getDefault()
,因为这是自动完成的。

将字符串首字母大写的较短/较快版本代码是:
name
的值是
“Stackoverflow”

试试这个

这个方法是这样的,考虑“hello World”这个词,这个方法把它变成“hello World”,大写每个单词的开头。

 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();

    }
专用字符串大写符(字符串字){
String[]words=word.split(“”);
StringBuilder sb=新的StringBuilder();
if(字[0].length()>0){
sb.append(Character.toUpperCase(words[0].charAt(0))+words[0].子序列(1,words[0].length()).toString().toLowerCase());
for(int i=1;i
这将起作用

char[] array = value.toCharArray();

array[0] = Character.toUpperCase(array[0]);

String result = new String(array);

在Android Studio中

将此依赖项添加到您的
build.gradle(模块:app)

现在你可以使用

String string = "STRING WITH ALL CAPPS AND SPACES";

string = string.toLowerCase(); // Make all lowercase if you have caps

someTextView.setText(WordUtils.capitalize(string));

请查看ACL WordUtils

WordUtils.capitalize(“您的字符串”)=“您的字符串”


您可以使用以下代码:

public static void main(String[] args) {

    capitalizeFirstLetter("java");
    capitalizeFirstLetter("java developer");
}

public static void capitalizeFirstLetter(String text) {

    StringBuilder str = new StringBuilder();

    String[] tokens = text.split("\\s");// Can be space,comma or hyphen

    for (String token : tokens) {
        str.append(Character.toUpperCase(token.charAt(0))).append(token.substring(1)).append(" ");
    }
    str.toString().trim(); // Trim trailing space

    System.out.println(str);

}

将字符串设置为小写,然后将第一个字母设置为大写,如下所示:

    userName = userName.toLowerCase();
然后将第一个字母大写:

    userName = userName.substring(0, 1).toUpperCase() + userName.substring(1).toLowerCase();
子字符串只是得到一个较大字符串的一部分,然后我们将它们重新组合在一起。

怎么样

还有:

String message = "my message";    
message = Character.toUpperCase(message.charAt(0)) + message.substring(1);
System.out.println(message)    // Will output: My message
为我工作。

使用Apache的公共库。把你的大脑从这些东西中解放出来,避免空指针和索引越界异常
String str1 = "hello";
str1.substring(0, 1).toUpperCase()+str1.substring(1);
第1步:

str.capitalize()
通过将其放入
build.gradle
dependencies,导入apache的公共语言库

compile 'org.apache.commons:commons-lang3:3.6'
第二步:

str.capitalize()
如果您确定字符串都是小写的,或者只需要初始化第一个字母,那么直接调用

StringUtils.capitalize(yourString);
如果要确保只有第一个字母是大写的,就像对
enum
执行此操作一样,请首先调用
toLowerCase()
,请记住,如果输入字符串为null,它将抛出
NullPointerException

StringUtils.capitalize(YourEnum.STUFF.name().toLowerCase());
StringUtils.capitalize(yourString.toLowerCase());
下面是apache提供的更多示例。它是免费的

StringUtils.capitalize(null)  = null
StringUtils.capitalize("")    = ""
StringUtils.capitalize("cat") = "Cat"
StringUtils.capitalize("cAt") = "CAt"
StringUtils.capitalize("'cat'") = "'cat'"
注意:

str.capitalize()

WordUtils
也包含在此库中,但已弃用。请不要使用它。

下面的解决方案会起作用

String A = "stackOverflow";
String ACaps = A.toUpperCase().charAt(0)+A.substring(1,A.length());
//Will print StackOverflow

不能对原语字符使用toUpperCase(),但可以先将整个字符串变为大写,然后取第一个字符,然后追加到子字符串,如上图所示。

使用
commons.lang.StringUtils
最佳答案是:

public static String capitalize(String str) {  
    int strLen;  
    return str != null && (strLen = str.length()) != 0 ? (new StringBuffer(strLen)).append(Character.toTitleCase(str.charAt(0))).append(str.substring(1)).toString() : str;  
}

我发现它非常棒,因为它用StringBuffer包装字符串。您可以根据自己的意愿操作StringBuffer,尽管使用的是同一个实例。

使用此实用程序方法获取所有大写字母

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);
}
String capitalialfirstletter(字符串名称)
{
char[]数组=name.toCharArray();
数组[0]=字符.toUpperCase(数组[0]);
for(int i=1;i
Java:

str.capitalize()
这是一个简单的助手方法,用于将每个字符串大写

public static String capitalize(String str)
{
    if(str == null) return str;
    return str.substring(0, 1).toUpperCase() + str.substring(1);
}
之后,只需调用
str=capitalize(str)


Kotlin:

str.capitalize()

给出的答案仅用于大写一个单词的第一个字母。使用以下代码将整个字符串大写

public static void main(String[] args) {
    String str = "this is a random string";
    StringBuilder capitalizedString = new StringBuilder();
    String[] splited = str.trim().split("\\s+");

    for (String string : splited) {         
        String s1 = string.substring(0, 1).toUpperCase();
        String nameCapitalized = s1 + string.substring(1);

        capitalizedString.append(nameCapitalized);
        capitalizedString.append(" ");
    }
    System.out.println(capitalizedString.toString().trim());
}
输出:
这是一个随机字符串

如果输入为大写,则使用以下命令:

str.capitalize()
str.substring(0,1).toUpperCase()+str.substring(1.toLowerCase()

如果输入为小写,则使用以下命令:

str.capitalize()

str.substring(0,1).toUpperCase()+str.substring(1)

目前的答案要么不正确,要么使这项简单的任务过于复杂。船尾
public class UpperCase {

    public static void main(String [] args) {

        String name;

        System.out.print("INPUT: ");
        Scanner scan = new Scanner(System.in);
        name  = scan.next();

        String upperCase = name.substring(0, 1).toUpperCase() + name.substring(1);
        System.out.println("OUTPUT: " + upperCase); 

    }

}
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
}