2010-09-12 96 views
1
String lower = Name.toLowerCase(); 
int a = Name.indexOf(" ",0); 
String first = lower.substring(0, a); 
String last = lower.substring(a+1); 
char f = first.charAt(0); 
char l = last.charAt(0); 
f = Character.toUpperCase(f); 
l = Character.toUpperCase(l); 
String newname = last +" "+ first; 
System.out.println(newname); 

我想将变量F和L替换为last和first中的小写第一个字母,因此它们将是大写。我怎样才能做到这一点?我只想用炭第一个和最后用字符替换字符串中的字母

回答

0

编辑替换的姓和名的首字母:
你也可以使用一个字符串标记来获取名称为:

StringTokenizer st = new StringTokenizer(Name); 
String fullName = ""; 
String currentName; 
while (st.hasMoreTokens()) { 
    /* add spaces between each name */ 
    if(fullName != "") fullName += " "; 
    currentName = st.nextToken(); 
    fullName += currentName.substring(0,0).toUpperCase() + currentName.substring(1); 
} 
+0

它将由newChar – 2010-09-12 21:15:43

+0

@Colin替换每oldChar:我想的replaceAll是更换所有的人,但检查API后,我看你是对的。无论哪种方式,更换不是最好的选择。答案已调整。 – gMale 2010-09-12 21:26:21

3

如果你正在做什么,我觉得你是,你应该考虑使用apache commons-lang库,然后看:

WordUtils.capitalize

显然,这也是开源的,所以为了您的作业的最佳解决方案,我会看看源代码。

但是,如果我是从头开始编写它(和最佳的性能是不是目标)这是我将如何来解决:虽然有这样做的更有效的方式

public String capitalize(String input) 
{ 
    // 1. split on the negated 'word' matcher (regular expressions) 
    String[] words = input.toLowerCase().split("\\W"); 
    StringBuffer end = new StringBuffer(); 
    for (String word : words) 
    { 
     if (word.length == 0) 
      continue; 
     end.append(" "); 
     end.append(Character.toUpperCase(word.charAt(0))); 
     end.append(word.substring(1)); 
    } 
    // delete the first space character 
    return end.deleteCharAt(0).toString(); 
} 
0

,你几乎得到了它。你只需要连接大写字母和姓和名,禁止第一个字符。

String newname = "" + l + last.subString(1) + " " + f + first.subString(1); 
0
String name = "firstname lastname"; 
//match with letter in beginning or a letter after a space 
Matcher matcher = Pattern.compile("^\\w| \\w").matcher(name); 
StringBuffer b=new StringBuffer(); 
while(matcher.find()) 
    matcher.appendReplacement(b,matcher.group().toUpperCase()); 
matcher.appendTail(b); 
name=b.toString();//Modified Name