String str = "java";
String cap = str.substring(0, 1).toUpperCase() + str.substring(1);
// cap = "Java"
用你的例子:
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);
}
StringUtils.capitalize(..)来自commons-lang
用于大写字符串首字母的较短/较快版本代码是:
String name = "stackoverflow";
name = name.substring(0,1).toUpperCase() + name.substring(1).toLowerCase();
name的值是"Stackoverflow"
使用Apache的公共库。从这些东西中释放你的大脑,避免使用Null Pointer&索引超出限制的例外
步骤1:
通过将其放入build.gradle依赖项中导入apache的常用lang库
compile 'org.apache.commons:commons-lang3:3.6'
第2步:
如果您确定您的字符串全部为小写,或者您只需要初始化第一个字母,请直接调用
StringUtils.capitalize(yourString);
如果你想确保只有第一个字母大写,比如为enum这样做,首先调用toLowerCase()并记住,如果输入字符串为空,它将抛出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'"
注意:
WordUtils也包含在此库中,但已弃用。请不要使用它。
你想做的可能是这样的:
s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
(将第一个char转换为大写并添加原始字符串的其余部分)
此外,您创建一个输入流阅读器,但从不读取任何行。因此name总是null。
这应该工作:
BufferedReader br = new InputstreamReader(System.in);
String name = br.readLine();
String s1 = name.substring(0, 1).toUpperCase() + name.substring(1);
来自Apache Commons的WordUtils.capitalize(java.lang.String)。
以下解决方案将有效。
String A = "stackOverflow";
String ACaps = A.toUpperCase().charAt(0)+A.substring(1,A.length());
//Will print StackOverflow
你不能在原始字符上使用toUpperCase(),但你可以先将整个String设置为大写,然后取第一个字符,然后附加到子字符串,如上所示。
使用WordUtils.capitalize(str)。
将字符串设置为小写,然后将第一个Letter设置为upper,如下所示:
userName = userName.toLowerCase();
然后把第一个字母大写:
userName = userName.substring(0, 1).toUpperCase() + userName.substring(1).toLowerCase();
substring只是得到一个更大的字符串,然后我们将它们组合在一起。
最短的:
String message = "my message";
message = Character.toUpperCase(message.charAt(0)) + message.substring(1);
System.out.println(message) // Will output: My message
为我工作。
String str1 = "hello";
str1.substring(0, 1).toUpperCase()+str1.substring(1);
您可以使用substring()执行此操作。
但有两种不同的情况:
情况1
如果你正在大写的String是人类可读的,你还应该指定默认的语言环境:
String firstLetterCapitalized =
myString.substring(0, 1).toUpperCase(Locale.getDefault()) + myString.substring(1);
案例2
如果您正在大写的String是机器可读的,请避免使用Locale.getDefault(),因为返回的字符串在不同区域之间会不一致,并且在这种情况下始终指定相同的区域设置(例如,toUpperCase(Locale.ENGLISH))。这将确保您用于内部处理的字符串是一致的,这将帮助您避免难以发现的错误。
注意:您不必为toLowerCase()指定Locale.getDefault(),因为这是自动完成的。
在Android Studio中
将此依赖项添加到build.gradle (Module: app)
dependencies {
...
compile 'org.apache.commons:commons-lang3:3.1'
...
}
现在你可以使用了
String string = "STRING WITH ALL CAPPS AND SPACES";
string = string.toLowerCase(); // Make all lowercase if you have caps
someTextView.setText(WordUtils.capitalize(string));
那么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);
}
}
这只是为了告诉你,你没有那么错。
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()来完成。 ;)
试试这个
这个方法的作用是,考虑单词“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 s1 = br.readLine();
char[] chars = s1.toCharArray();
chars[0] = Character.toUpperCase(chars[0]);
s1= new String(chars);
System.out.println(s1);
这比使用子字符串更好(优化)。 (但不要担心小字符串)
这会奏效
char[] array = value.toCharArray();
array[0] = Character.toUpperCase(array[0]);
String result = new String(array);
看看ACL WordUtils。
WordUtils.capitalize(“你的字符串”)==“你的字符串”
如何在字符串中的每个首字母大写?
public static String capitalizer(final String texto) {
// split words
String[] palavras = texto.split(" ");
StringBuilder sb = new StringBuilder();
// list of word exceptions
List excessoes = new ArrayList(Arrays.asList("de", "da", "das", "do", "dos", "na", "nas", "no", "nos", "a", "e", "o", "em", "com"));
for (String palavra : palavras) {
if (excessoes.contains(palavra.toLowerCase()))
sb.append(palavra.toLowerCase()).append(" ");
else
sb.append(Character.toUpperCase(palavra.charAt(0))).append(palavra.substring(1).toLowerCase()).append(" ");
}
return sb.toString().trim();
}
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);
}
您可以使用以下代码:
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);
}
许多答案都非常有用,所以我使用它们来创建一个方法来将任何字符串转换为标题(第一个字符大写):
static String toTitle (String s) {
String s1 = s.substring(0,1).toUpperCase();
String sTitle = s1 + s.substring(1);
return sTitle;
}
您可以使用以下代码:
public static String capitalizeString(String string) {
if (string == null || string.trim().isEmpty()) {
return string;
}
char c[] = string.trim().toLowerCase().toCharArray();
c[0] = Character.toUpperCase(c[0]);
return new String(c);
}
使用JUnit进行示例测试:
@Test
public void capitalizeStringUpperCaseTest() {
String string = "HELLO WORLD ";
string = capitalizeString(string);
assertThat(string, is("Hello world"));
}
@Test
public void capitalizeStringLowerCaseTest() {
String string = "hello world ";
string = capitalizeString(string);
assertThat(string, is("Hello world"));
}
System.out.println(Character.toString(A.charAt(0)).toUpperCase()+A.substring(1));
P.S = a是一个字符串。
要将字符串中每个单词的第一个字符大写,
首先你需要得到该字符串的每个单词&amp;对于这个拆分字符串,其中任何空格都使用如下所示的split方法,并将每个单词存储在数组中。
然后创建一个空字符串。之后通过使用substring()方法获取第一个字符&amp;相应单词的剩余字符,并将它们存储在两个不同的变量中。
然后使用toUpperCase()方法将第一个字符大写,并将下面的重新映射字符添加到该空字符串中。
public class Test {
public static void main(String[] args)
{
String str= "my name is khan"; // string
String words[]=str.split("\s"); // split each words of above string
String capitalizedWord = ""; // create an empty string
for(String w:words)
{
String first = w.substring(0,1); // get first character of each word
String f_after = w.substring(1); // get remaining character of corresponding word
capitalizedWord += first.toUpperCase() + f_after+ " "; // capitalize first character and add the remaining to the empty string and continue
}
System.out.println(capitalizedWord); // print the result
}
}
我发布的代码将删除下划线(_)符号和String中的额外空格,并且它将大写字符串中每个新单词的第一个字母
private String capitalize(String txt){
List finalTxt=new ArrayList<>();
if(txt.contains("_")){
txt=txt.replace("_"," ");
}
if(txt.contains(" ") && txt.length()>1){
String[] tSS=txt.split(" ");
for(String tSSV:tSS){ finalTxt.add(capitalize(tSSV)); }
}
if(finalTxt.size()>0){
txt="";
for(String s:finalTxt){ txt+=s+" "; }
}
if(txt.endsWith(" ") && txt.length()>1){
txt=txt.substring(0, (txt.length()-1));
return txt;
}
txt = txt.substring(0,1).toUpperCase() + txt.substring(1).toLowerCase();
return txt;
}
其中一个答案是95%正确,但它在我的unitTest失败了@Ameen Maheen的解决方案几近完美。除了在输入转换为String数组之前,您必须修剪输入。所以完美的一个:
private String convertStringToName(String name) {
name = name.trim();
String[] words = name.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();
}
以下示例还会在特殊字符(例如[/ - ])之后对单词进行大写
public static String capitalize(String text) {
char[] stringArray = text.trim().toCharArray();
boolean wordStarted = false;
for( int i = 0; i < stringArray.length; i++) {
char ch = stringArray[i];
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == ''') {
if( !wordStarted ) {
stringArray[i] = Character.toUpperCase(stringArray[i]);
wordStarted = true;
}
} else {
wordStarted = false;
}
}
return new String(stringArray);
}
Example:
capitalize("that's a beautiful/wonderful life we have.We really-do")
Output:
That's A Beautiful/Wonderful Life We Have.We Really-Do
谢谢我已经阅读了一些评论,我带来了以下内容
public static void main(String args[])
{
String myName = "nasser";
String newName = myName.toUpperCase().charAt(0) + myName.substring(1);
System.out.println(newName );
}
我希望它有所帮助
祝好运