2016-12-14 3 views
1

ファイル内のすべての文字をアルファベットの次の文字に置き換える必要があります(番号は使用されていないので、そこには関心がありません)。しかし、私はスペースと句読点を保存することになっています。コードは、文字を変更するためにうまく動作しますが、私はスペースと句読点を保持する方法がわかりません。どんな助けもありがとうございます。文字列のすべての文字をアルファベットで次の文字に置き換えますが、スペースと句読点は維持しますか?

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

あなたは、文字列内の現在の文字への変換を適用する前に、それはそうのような手紙だ場合、次のことが確認できます。

if(Character.isLetter(character)) 
{ 
//Do conversion here 
} 

変換は文字だけに適用されますこの方法。

0

文字Cを表示します。 Bを文字列に変換します。その後、文字列を正規表現にマッチさせます。 \\ sは空白スペースです\\ p {Punct}は句読点です。角括弧は内部のアイテムの1つを探していることを示します。

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)); 
関連する問題