如何计算字符串中的空格数

How to calculate the number of whitespaces in a String

我正在尝试通过 .trim() 方法删除字符串开头的空格。但是当我尝试计算我删除的空格数时,它不起作用。我试过做一个等式: int spaces = line.length() - line.trim().length()。但出于某种原因,它总是最终说出正在输入的行的长度。我在这里错过了什么吗?还是我代码的其他部分?

public Squeeze(FileInput inFile, FileOutput outFile)
{
    int spaces = 0;
    String line = "";
    while(inFile.hasMoreLines())
    {
        line = inFile.readLine();
        line = line.trim();
        spaces = line.length() - line.trim().length();
        outFile.println(spaces + line);

    }
    outFile.close();
}

注意:OP 的代码实际上并不计算所有空格,只计算前导空格。对于那些想要直接回答问题的人:

如果你有公地:

int count = StringUtils.countMatches(yourText, " ");

如果你不这样做:

int count = yourText.length() - yourText.replace(" ", "").length();

以下解决方案仅基于 OP 的代码。

您的问题在这部分:

line = line.trim();
// At this point, 'line' has already been trimmed.
spaces = line.length() - line.trim().length();

您需要将修剪后的版本放入其他变量,或者移动 line = line.trim() 行,直到至少 计算完空格后。

public Squeeze(FileInput inFile, FileOutput outFile)
{
int spaces = 0;
String line = "";
String trimmedLine = "";
while(inFile.hasMoreLines())
{
    line = inFile.readLine();
    trimmedLine = line.trim();
    spaces = line.length() - trimmedLine.length();
    outFile.println(Format.left(spaces, 4) + line);

}
outFile.close();
}