如何从文本文件中的字符串中删除奇数ASCll字符?

时间:2016-03-11 06:22:00

标签: java

我希望我有意义,但是,我想弄清楚如何在文本文件中读取字符串/输入,以便我可以删除其中的奇数字母。所以例如'a'将是1,'b'将是2,'c'将是3,依此类推。所以在我的文本文件中我写了“Hello,world!”。最终输出应该是Hll,rld! 我真的需要一些帮助,因为我正在努力奋斗,只是盯着我的电脑几个小时无处可去,试图解决这个问题。继承了我到目前为止所做的事情(基本上没什么),我在文件处理方面很糟糕。

 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.Scanner;

 public class readodds {
   public static void main (String[]args) throws FileNotFoundException {
     Scanner console = new Scanner(System.in);           
     String letter= new String();
     System.out.println("Name of file: ");
     String inputFile = console.next();

     File file = new File(inputFile);
     Scanner in = new Scanner(file);
     System.out.println(in.nextLine());
     while(in.hasNext()) {
       String line = in.nextLine();
     }
   }
 }

5 个答案:

答案 0 :(得分:2)

让JDK为您做繁重的工作。它可以在一行中完成:

Files.lines(Paths.get(inputFile))
    .map(s -> s.replaceAll("(?i)[acegikmoqsuwy]",""))
    .forEach(System.out::println);

答案 1 :(得分:0)

 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.Scanner;

 public class readodds {
   public static void main (String[]args) throws FileNotFoundException {
     Scanner console = new Scanner(System.in);           
     String letter= new String();
     System.out.println("Name of file: ");
     String inputFile = console.next();

     File file = new File(inputFile);
     Scanner in = new Scanner(file);
     while(in.hasNext()) {
       String line = in.nextLine();
       line = line.replaceAll("a","1"); //This replaces every a with a 1
       System.out.println(line);

     }
   }
 }

您可以为要更改的每个其他字母复制line.replaceAll(“a”,“1”)的调用。如果你想删除一个字母:line.replaceAll(“a”,“”);

答案 2 :(得分:0)

您可以遍历字符串并通过比较仅打印偶数字母。

    while (in.hasNext()) {
        String line = in.nextLine();
        for (int i = 0; i < line.length(); i++) {
            char letter = line.charAt(i);
            if (Character.toUpperCase(letter) >= 'A' && Character.toUpperCase(letter) <= 'Z' && ('Z' - Character.toUpperCase(letter)) % 2 == 0)
                System.out.print(letter);
        }
    }

答案 3 :(得分:0)

你可以使用asci整数值的字符。例如 字符&#34; a&#34;等效的int值是97,b&#39;等等。 您可以执行以下代码来获取每行文件的转换行。 然后将新的转换行写入输出临时文件

public static void main(String[]  argv) {
        System.out.println(removedOddLetter("Hello, world!"));

    }

    public static String removedOddLetter(String test){
        int aNum='a';
        int ANum='A';
        int zNum='z';
        int ZNum='Z';
        char[] bArr=test.toCharArray();
        StringBuilder outLines=new StringBuilder();
        for(int i=0;i<bArr.length;i++){
            // if the character is alphabet
            if (bArr[i] >= aNum && bArr[i] <= zNum){
                // offSet is zero for odd letter like a
                int offSet=bArr[i]-aNum;
                // if bArr[i] is not odd letter
                if((offSet%2) ==1){
                    outLines.append(bArr[i]);

                }

            }
            //  similarly for Capital characters
            else if (bArr[i] >= ANum && bArr[i] <= ZNum){
                // offSet is zero for odd letter like a
                int offSet=bArr[i]-ANum;
                // if bArr[i] is not odd letter
                if((offSet%2) ==1){
                    outLines.append(bArr[i]);

                }
            }
            else {
                // any other character copy the content
                outLines.append(bArr[i]);
            }
        }
        return outLines.toString();
    }

答案 4 :(得分:0)

你的While循环将是

while(in.hasNext()) {

    String line = in.nextLine();
    char[] arr = s.toCharArray ();
    for (char c: arr) {
        if ((c % 2) == 0) {
           System.out.print (c);
        }
    }
}