删除多行开头的整数



我有一个txt文件,它有超过1000行文本,开头有一些整数。如:

22Ahmedabad, AES Institute of Computer Studies
526Ahmedabad, Indian Institute of Managment
561Ahmedabad, Indus Institute of Technology & Engineering
745Ahmedabad, Lalbhai Dalpatbhai College of Engineering

我想将所有行存储在另一个文件中,不包含整数。我写的代码是:

while (s.hasNextLine()){
    String sentence=s.nextLine();
    int l=sentence.length();
    c++;
    try{//printing P
        FileOutputStream ffs = new FileOutputStream ("ps.txt",true);
        PrintStream p = new PrintStream ( ffs );
        for (int i=0;i<l;i++){
            if ((int)sentence.charAt(i)<=48 && (int)sentence.charAt(i)>=57){
                p.print(sentence.charAt(i));
            }
        }
        p.close();
    }   
    catch(Exception e){}
}

但是输出一个空白文件

您的代码中有几处需要改进:

    不要每一行都重新打开输出文件。一直开着就行了。
  1. 你要删除所有的数字,而不仅仅是开始的数字-这是你的意图吗?
  2. 你知道有哪个数字同时是<= 48>= 57吗?
  3. Scanner.nextLine()不包括行返回,所以你需要在每行之后调用p.println()

试试这个:

// open the file once
FileOutputStream ffs = new FileOutputStream ("ps.txt");
PrintStream p = new PrintStream ( ffs );
while (s.hasNextLine()){
    String sentence=s.nextLine();
    int l=sentence.length();
    c++;
    try{//printing P
        for (int i=0;i<l;i++){
            // check "< 48 || > 57", which is non-numeric range
            if ((int)sentence.charAt(i)<48 || (int)sentence.charAt(i)>57){
                p.print(sentence.charAt(i));
            }
        }
        // move to next line in output file
        p.println();
    }   
    catch(Exception e){}
}
p.close();

您可以将此正则表达式应用于从文件中读取的每行:

String str = ... // read the next line from the file
str = str.replaceAll("^[0-9]+", "");

正则表达式^[0-9]+匹配行首的任意数字。replaceAll方法用空字符串替换匹配项

在mellamokb注释之上,您应该避免使用"魔术数字"。不能保证这些数字将落在ASCII码的预期范围内。

您可以使用Character.isDigit

简单地检测一个字符是否是数字
String value = "22Ahmedabad, AES Institute of Computer Studies";
int index = 0;
while (Character.isDigit(value.charAt(index))) {
    index++;
}
if (index < value.length()) {
    System.out.println(value.substring(index));
} else {
    System.out.println("Nothing but numbers here");
}

(Nb dasblinkenlight已经发布了一些优秀的正则表达式,这可能更容易使用,但如果你喜欢,regexp把我的大脑里外:p)

相关内容

  • 没有找到相关文章

最新更新