用字符替换字符串中的字母
问题描述:
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中的小写第一个字母,因此它们将是大写。我怎样才能做到这一点?我只想用炭第一个和最后用字符替换字符串中的字母
答
编辑替换的姓和名的首字母:
你也可以使用一个字符串标记来获取名称为:
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);
}
答
如果你正在做什么,我觉得你是,你应该考虑使用apache commons-lang库,然后看:
显然,这也是开源的,所以为了您的作业的最佳解决方案,我会看看源代码。
但是,如果我是从头开始编写它(和最佳的性能是不是目标)这是我将如何来解决:虽然有这样做的更有效的方式
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();
}
答
,你几乎得到了它。你只需要连接大写字母和姓和名,禁止第一个字符。
String newname = "" + l + last.subString(1) + " " + f + first.subString(1);
答
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
它将由newChar – 2010-09-12 21:15:43
@Colin替换每oldChar:我想的replaceAll是更换所有的人,但检查API后,我看你是对的。无论哪种方式,更换不是最好的选择。答案已调整。 – gMale 2010-09-12 21:26:21