用字母表中的下一个字母替换字符串的每个字母,但保留空格和标点符号?

时间:2016-12-14 02:05:13

标签: java

我需要用字母表中的下一个字母替换文件中的每个字母(没有使用数字,所以不用担心)。但是我应该保留空格和标点符号。代码可以正常更改字母,但我不知道如何保留空格和标点符号。任何帮助表示赞赏。

import java.io.*; 
import java.util.*;

class Thirteen{
    public static void main(String [] args)throws IOException{

        Scanner keys = new Scanner(System.in);
        Scanner keystwo;

        System.out.println("Please enter an input file name");
        String filename = keys.next();
        File infile = new File(filename);
        keystwo = new Scanner(infile);

        System.out.println("Please enter an output filename");
        String outputfile = keys.next();
        File outfile = new File(outputfile);

        FileOutputStream outstream = new FileOutputStream(outfile);
        PrintWriter display = new PrintWriter(outstream);

        while(keystwo.hasNext()){

            String one = keystwo.next().toLowerCase();
            //convert to stringbuilder to edit
            StringBuilder fine = new StringBuilder(one);

            for(int A = 0; A < fine.length(); A++){

                //read in as character
                char B = fine.charAt(A);
                //convert to ASCII
                int two = (int)B;
                //add one
                int convert = two+1;
                //convert to char
                char C = (char)convert;
                if(C == '{'){
                    C = 'a';
                }
                //print char & add to output file
                display.print(Character.toString(C));
                System.out.print(Character.toString(C));
            }//end for
        }//end while

        keystwo.close();
        display.close();
    }
}//end

2 个答案:

答案 0 :(得分:0)

在将转换应用于字符串中的当前字符之前,您可以检查它是否是这样的字母:

inSampleSize

这样转换只会应用于字母。

答案 1 :(得分:0)

带来char C。将B转换为String。然后在正则表达式上匹配字符串。 \\ s用于空格\\ p {Punct}用于标点符号。方括号表示它正在寻找其中一个项目。

    String charAsString = Character.toString(B);
    char C = B;
    if (!charAsString.matches("[\\s\\p{Punct}]"))
    {
      // convert to ASCII
      int two = (int) B;
      // add one
      int convert = two + 1;
      // convert to char
      C = (char) convert;
      if (C == '{')
      {
        C = 'a';
      }
      // print char & add to output file
    }
    display.print(Character.toString(C));
    System.out.print(Character.toString(C));