用空格替换制表符

5
final String remove = "   " // tab is 3 spaces

while (lineOfText != null)
   {
       if (lineOfText.contains(remove))
       {
           lineOfText = " ";
        }
       outputFile.println(lineOfText);
       lineOfText = inputFile.readLine();
   }

我尝试运行这个代码,但它没有将制表符替换为一个空格。有什么解决办法吗?


1
你的 remove 变量是 3 个空格,而不是制表符。制表符应该像 "\t" 这样。此外,指令 lineOfText = " "; 将用单个空格替换 lineOfText 中的整个字符串。 - Come Raczy
2个回答

11

Tab键不是三个空格,它是一种特殊字符,您需要通过转义字符获取,具体方法是final String remove = "\t";

if (lineOfText.contains(remove))
    lineOfText = lineOfText.replaceAll(remove, " ");
}

或者删除if(因为replaceAll不需要它),如下:

lineOfText = lineOfText.replaceAll(remove, " ");

5
如果您不使用正则表达式,请使用 replace() - shmosel
谢谢你!Shmosel,正则表达式是什么? - ChosenForWorlds
1
@ChosenForWorlds 正则表达式是一种通用的方式,用于表示字符模式,而不需要具体列出所有实际字符组合。 - Charles
@shmosel 为什么应该使用 replace() 而不是 replaceAll()? - velocity
@velocity 比正则表达式替换更简单,也可能更有效率。 - shmosel

5
您可以使用此正则表达式来替换字符串中的任何类型的转义字符(包括制表符、换行符、空格等)为所需的字符:
lineOfText.replaceAll("\\s", " ");

在这个例子中,我们将字符串lineOfText中的所有转义字符替换为空格。

1
这将替换3个连续的空格为3个连续的空格,因此lineOfText.replaceAll("\s+", " ");更符合操作者的利益。 - A Honey Bustard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接