如何计算String中的空格数

时间:2016-11-15 03:59:18

标签: java string whitespace removing-whitespace

我试图通过执行.trim()方法删除String开头的空格。但是,当我尝试计算删除多少个空格时,它就无法工作。我试过制作一个等式: 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();
}

1 个答案:

答案 0 :(得分:1)

注意: 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()行,直到 之后您已经计算了空格。< / p>

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();
}