【问题标题】:Capitalizing the first letter of a string using ascii table使用 ascii 表将字符串的第一个字母大写
【发布时间】:2016-09-02 23:55:21
【问题描述】:

如何使用 ascii 表仅将字符串数组的第一个字母大写?

例如说我有句子

“我要去海滩”、“我叫汤姆”、“大家好”

。 我想把它变成

“我要去海滩”,我叫汤姆“,大家好”

。 我想这样做就像编写一个 for 循环,然后另一个 for 将遍历数组中每个单元格中的字符串,并编写一个 if 命令,它会说“如果字母在'a'-'z'之间,倒退 32 个字母(按 ASCII 表)。但我不知道怎么写。

此外,我需要返回已修复的数量。 例如,如果我有上面的句子,它将返回“修复 3 个大写字母”。

谢谢!

【问题讨论】:

  • 您使用哪种编程语言?您还可以发布一些代码来展示您解决问题的尝试吗?
  • 是的!我正在使用java语言。我开始写这段代码: for(int i=0;i
  • 请将代码添加到您的问题中。 :-)
  • 是否需要使用 ASCII 表?确实没有必要这样做,因为 Java 已经为您提供了该功能。
  • 而且,Java 字符串不使用 ASCII,它们使用 Unicode/UTF-16。 Unicode 包含所有 ASCII 字符,因此您可以编写仅适用于这些字符的算法。但是,当像 Character 这样的标准 Java 类处理所有大约 120,000 个字母的大小写操作时,为什么要这样做呢?

标签: arrays string ascii


【解决方案1】:

使用ASCII表是完全没有必要的,你只需要检查索引0处的char是否为小写,如果是则增加一个计数器并更改字符串。

示例:

public static void main(String[] args) {
    int counter = 0;
    String array[] = { "i am going to the beach", "my name is tom", "hello everyone" };
    for (int j = 0; j < array.length; j++) {
        char initChar = array[j].charAt(0);
        if (Character.isLowerCase(initChar)) {
            counter++;
            array[j] = Character.toUpperCase(initChar) + array[j].substring(1);
        }
    }
    System.out.println("We have refactor " + counter + " sentences");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2017-06-25
    相关资源
    最近更新 更多