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