从.txt文件中删除某个字符

时间:2017-03-28 09:48:06

标签: java spaces

如果我输入

java DeleteX e < input.txt > output.txt

在终端中,代码应该从e文件中删除某个字符(在本例中为input.txt),然后将相同的文本保存到新文件output.txt但是应删除所有e

例如:如果input.txt中的文字如下:

Hello! My name is John Doe.

output.txt文件应为:

Hllo! My nam is John Do.

但我没有在output.txt获得空格。我明白了:

Hllo!MynamisJohnDo.

代码:

public class DeleteX{
public static void main(String []args){

String x = args[0]; // The character I want removed from the text
char X = x.charAt(0); // Transform the character from String to char

    while(! StdIn.isEmpty()){
        String line = StdIn.readString(); // The .txt file

        for( int i = 0; i < line.length(); i++){


            if( line.charAt(i) != X ){
                System.out.print(line.charAt(i));

            } // if             
        } // for
     } // while 
   } // main
} // class

3 个答案:

答案 0 :(得分:0)

我认为更好的方法是在字符串上使用replace方法。

像:

line = line.replace(x, "");

然后打印出来。

答案 1 :(得分:0)

您可以使用String.replace方法替换该字符。 例如

String replaceString=s1.replaceAll(""+x,""); //replaces all occurrences of x to "".

e.g。

String input = "Hello! My name is John Doe.";
char X = 'e';
System.out.println(input.replaceAll("" + X, ""));

打印的输出为 - Hllo! My nam is John Do.

答案 2 :(得分:0)

根据此页面http://introcs.cs.princeton.edu/java/stdlib/javadoc/StdIn.html

StdIn功能通过一次读取一个令牌来操作,其中

  

令牌是非空白字符的最大序列。

这意味着你对StdIn.readString()的调用;不是一次读一行,而是一次读一个标记(或单词) - 按定义,没有空格。

所以你应该一次读一行,而不是使用StdIn。见Read input line by line