我正在编写一个程序,它将命名转换为标准命名约定。例如,(aLeX teReNce = Alex Terence)和另一个示例,(kImBerLy tAn> Kimberly Tan)我已经成功转换了它,但是在进行比较时,该程序将失败。请问这里有什么问题?还有其他解决方法吗?除了toUpper和toLower以外,还有其他方法吗?谢谢!
public static void main(String args[])
{
String searchName = "aLeX teReNce";
String[] str = searchName.split(" ");
searchName = "";
for(int i = 0; i < str.length; i++)
{
searchName += toUpper(str[i].charAt(0));
for(int j = 1; j < str[i].length(); j++)
{
searchName += toLower(str[i].charAt(j));
}
searchName += " ";
}
searchName = searchName.trim();
System.out.println("After Rearrange: " + searchName);
System.out.println();
if(searchName.equals("Alex Terence"))
{
System.out.println("True");
}
}
public static char toUpper(char upper)
{
if(!(upper > 'A' && upper < 'Z'))
{
upper = (char)((int)(upper) - 32);
}
return upper;
}
public static char toLower(char lower)
{
if(!(lower > 'a' && lower < 'z'))
{
lower = (char)((int)(lower) + 32);
}
return lower;
}
这是由于末尾有空白。在完成Terrance
的内部for循环后,它将在末尾添加一个额外的空格。因此您的字符串是"Alex Terrance "
而不是"Alex Terrance"
在外部for循环之后,像这样修剪字符串以删除结尾的空格。
searchName = searchName.trim()
首先防止这种情况发生的另一种方法是使用String类的静态join()
方法。
public static void main(String args[])
{
String searchName = "aLeX teReNce";
String[] str = searchName.split(" ");
searchName = "";
for(int i = 0; i < str.length; i++)
{
searchName += toUpper(str[i].charAt(0));
for(int j = 1; j < str[i].length(); j++)
{
searchName += toLower(str[i].charAt(j));
}
str[i] = searchName;
}
searchName = String.join(" ", str);
System.out.println("After Rearrange: " + searchName);
System.out.println();
if(searchName.equals("Alex Terence"))
{
System.out.println("True");
}
}