所以我必须编写一个java代码:

  • 输入姓名
  • 标题格式中的名称格式
  • 输入第二个名字
  • 标题格式中的名称格式
  • 按字母顺序显示它们

我知道 Java Character 类具有 isLowerCase()、isUpperCase、toLowerCase() 和 toUpperCase() 方法,您可以使用这些方法逐个字符地检查字符串。如果第一个字符是小写,则将其转换为大写,对于每个后续字符,如果该字符是大写,则将其转换为小写。

问题是我如何检查每个字母?它应该包含什么样的变量和字符串?你能帮忙吗?

有帮助吗?

解决方案

您应该使用StringBuilder,当处理字符串操作时。这样,您最终会创建较少数量的对象..

StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");

s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());            

s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));

if (s1.toString().compareTo(s2.toString()) >= 0) {
    System.out.println(s2 + " " + s1);

} else {
    System.out.println(s1 + " " + s2);
}
.

其他提示

您可以将第一个字符转换为大写,然后小写字符串的其余部分:

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John
.

仅使用字符串类遍历字符串,遍历字符串中的每个字符。

String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size;  i++) {
    // s.charAt(i) gets the character at the ith code point.
}
.

这个问题答案如何“更改”字符串 - 你不能。 StringBuilder类提供了在特定索引中编辑字符的方便方法。

看起来你想要确保所有名称都是正确的大写,例如:“Martin Ye” - >“Martin Ye”,在这种情况下,您想要遍历字符串输入以确保第一个字符空间大写后的字符串和字符。

要按字母顺序化列表,我建议将所有输入的名称存储到ArrayList或其他一些集合对象,创建一个实现比较器的比较器,并将其传递给Collections.sort()...查看在类似的VS比较器上。

这应该修复它

List<String> nameList = new ArrayList<String>();
    nameList.add(titleCase("john smith"));
    nameList.add(titleCase("tom cruise"));
    nameList.add(titleCase("johnsmith"));
    Collections.sort(nameList);
    for (String name : nameList) {
        System.out.println("name=" + name);
    }

public static String titleCase(String realName) {
    String space = " ";
    String[] names = realName.split(space);
    StringBuilder b = new StringBuilder();
    for (String name : names) {
        if (name == null || name.isEmpty()) {
            b.append(space);
            continue;
        }
        b.append(name.substring(0, 1).toUpperCase())
                .append(name.substring(1).toLowerCase())
                .append(space);
    }
    return b.toString();
}
.

String 有一个方法 toCharArray 返回一个新分配的 char[] 它的角色。还记得那段时间 String不可变的, ,数组的元素可以重新分配。

相似地, String 有一个构造函数 这需要一个 char[] 代表新创建的角色 String.

因此,将这些结合起来,您就有一种方法可以从 String 到一个 char[], ,修改 char[], ,然后回到一个新的 String.

这可以通过多种方式来实现,其中大部分都取决于需求的细节。

但基本前提是相同的。 String 是不可变的(它的内容不能改变),所以你需要提取字符 String, ,将第一个字符转换为大写并重新构造一个新的 String 来自 char 大批。

正如已经指出的,这相对简单。

您可能需要做的另一件事是在一次传递中处理多个名称(名字、姓氏)。同样,这相对简单。困难的部分是,当您可能需要根据多个条件拆分字符串时,您需要诉诸正则表达式。

这是一个非常简单的例子。

String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
    char[] chars = part.toLowerCase().toCharArray();
    chars[0] = Character.toUpperCase(chars[0]);

    sb.append(new String(chars)).append(" ");
}

name = sb.toString().trim();
System.out.println(name);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top