截止目前,我正在使用这段代码将字符串中的第一个字母大写。
String output = input.substring(0, 1).toUpperCase() + input.substring(1);
这对我来说看起来很肮脏..有没有直接或优雅的方法..
截止目前,我正在使用这段代码将字符串中的第一个字母大写。
String output = input.substring(0, 1).toUpperCase() + input.substring(1);
这对我来说看起来很肮脏..有没有直接或优雅的方法..
这样怎么样?
String output = Character.toUpperCase(input.charAt(0)) + input.substring(1);
我想不出在不使用外部库的情况下更干净的方法,但这绝对比你目前拥有的要好。
StringUtils.capitalize
则不然。 - arshajii你应该查看Apache Commons Lang
库中的StringUtils
类 - 它有一个名为.capitalize()
的方法。
来自该库的描述:
将字符串的第一个字母大写,以标题大小写形式显示,如Character.toTitleCase(char)。其他字母不会改变。
StringUtils.capitalize("fred from jupiter");
会产生 "Fred from jupiter"
。这个方法只会让字符串的第一个字符变成大写字母。 - udolineString out = Character.toUpperCase(inText.charAt(0)) + inText.substring(1).toLowerCase();
在这里,看我的
String foo = "suresh";
String bar = foo.toUpperCase();
if(bar.charAt[0] == 'S'){
throw new SuccessException("bar contains 'SURESH' and has the first letter capital").
}
Character.toString(a.charAt(0)).toUpperCase()+a.substring(1)
P.S = a 是字符串。
假设您可以使用Java 8,这是一种没有人询问的函数式方法...
import java.util.Optional;
import java.util.stream.IntStream;
public class StringHelper {
public static String capitalize(String source) {
return Optional.ofNullable(source)
.map(str -> IntStream.concat(
str.codePoints().limit(1).map(Character::toUpperCase),
str.codePoints().skip(1)))
.map(stream -> stream.toArray())
.map(arr -> new String(arr, 0, arr.length))
.orElse(null);
}
}
它的优雅之处在于处理空值和空字符串情况时不需要任何条件语句。
public static void main(String[] args) {
String str = null;
String outStr = null;
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String: ");
str = sc.nextLine();
//c= Character.toUpperCase(str.charAt(0));
for(int i=0; i< (str.length());i++){
if(str.charAt(i)==' '){
outStr= outStr.substring(0,i+1)+str.substring(i+1,i+2).toUpperCase()+str.substring(i+2);
}else if(i==0){
outStr=str.substring(0,1).toUpperCase()+str.substring(1);
}
}
System.out.println("STRING::"+outStr);
}
_123
,它会抛出 NullPointerException
。相比其他答案,你的回答似乎也有点复杂。 - pzaengerclass strDemo3
{
public static void main(String args[])
{
String s1=new String(" the ghost of the arabean sea");
char c1[]=new char[30];
int c2[]=new int[30];
s1.getChars(0,28,c1,0);
for(int i=0;i<s1.length();i++)
{
System.out.print(c1[i]);
}
for(int i=1;i<s1.length();i++)
{
c2[i]=c1[i];
if(c1[i-1]==' ')
{
c2[i]=c2[i]-32;
}
c1[i]=(char)c2[i];
}
for(int i=0;i<s1.length();i++)
{
System.out.print(c1[i]);
}
}
}