我试图通过执行.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();
}
答案 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();
}