0

我尝试解决的另一个问题(注意,这不是作业,而是我脑海中突然出现的问题),我正在尝试提高我在 Java 中解决问题的技能。我想显示这个:

学生 ID #
Carol McKane 920 11
James Eriol 154 10
Elaine Black 462 12

我想要做的是在第 3 列,显示字符数而不计算空格。给我一些提示来做到这一点。或者指出 Java 强大的 API,因为我对 Java 的字符串 API 还不是很熟悉。谢谢。

4

4 回答 4

2

考虑解决一个问题并将答案呈现为两个非常不同的步骤。我不会帮助您在表格中进行演示,但要计算字符串中的字符数(不带空格),您可以使用以下命令:

String name = "Carol McKane";
int numberOfCharacters = name.replaceAll("\\s", "").length();

正则表达式\\s匹配字符串中的所有空白字符name,并将它们替换为"",或不替换。

于 2012-10-05T06:27:20.487 回答
2

听起来你只想要这样的东西:

public static int countNonSpaces(String text) {
    int count = 0;
    for (int i = 0; i < text.length(); i++) {
        if (text.charAt(i) != ' ') {
            count++;
        }
    }
    return count;
}

您可能想要修改它以使用Character.isWhitespace而不是仅检查' '. 另请注意,这会将基本多语言平面之外的对计为两个字符。这对您来说是否会成为问题取决于您的用例......

于 2012-10-05T06:27:27.177 回答
0

要了解有关它的更多信息,您应该观看StringCharacter的 API 文档

这里有一些如何做的例子:

// variation 1
int count1 = 0;
for (char character : text.toCharArray()) {
    if (Character.isLetter(character)) {
        count1++;
    }
}

这使用“for”指令的特殊缩写。这是为了更好地理解的长表格:

// variation 2
int count2 = 0;
for (int i = 0; i < text.length(); i++) {
    char character = text.charAt(i);
    if (Character.isLetter(character)) {
        count2++;
    }
}

顺便说一句,通过 replace 方法删除空格对我来说不是一种好的编码风格,对于理解字符串类的工作方式也没有多大帮助。

于 2012-10-05T07:12:41.353 回答
0

可能是最短和最简单的方法:

    String[][] students = { { "Carol McKane", "James Eriol", "Elainee Black" }, { "920", "154", "462" } };


    for (int i = 0 ; i < students[0].length; i++) {
        System.out.println(students[0][i] + "\t" + students[1][i] + "\t" + students[0][i].replace( " ", "" ).length() );
    }

replace(),替换字符串的每个子字符串(“”)并将其从返回的结果中删除,从此时间字符串中,不带空格,您可以通过调用 length() 来获取长度...字符串名称将保留不变。

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

干杯

于 2012-10-05T06:27:48.873 回答