2012-04-17 14 views
0

私はプロジェクトに取り組んでおり、a1 =( "hello" + "World")のような入力を適切に解析する方法を知りません。 a1は私が作った細胞で、最後にはその細胞にhelloworldを入れようとしています。これは私が解析入力を使用する私のクラスの一つです。私は数字を使用するとうまく動作しますが、文字列では動作しません。 Imちょうどhimanのような入力を( "hi" + "man")のように解析できるようにしようとしています。私は、スペースとプラス記号を解析し、ヒーランドを単一の文字列にすることができればいいだけです。どのように文字列を渡し、それらを結合して新しい変数を作成するか(文字列連結の問題)?

import java.util.Scanner; 


public class ParseInput { 
    private static String inputs; 
    static int col; 
    private static int row; 
    private static String operation; 
    private static Value field; 


    public static void parseInput(String input){ 
     //splits the input at each regular expression match. \w is used for letters and \d && \D for integers 
     inputs = input; 
     Scanner tokens = new Scanner(inputs); 
     String[] strings = input.split("="); 
     String s1 = strings[0].trim(); // a1 
     String s2 = strings[1].trim(); // "Hello" + "World" 

     strings = s2.split("\\+"); 
     String s3 = strings[0].trim().replaceAll("^\"", "").replaceAll("\"$", ""); // Hello 
     String s4 = strings[1].trim().replaceAll("^\"", "").replaceAll("\"$", ""); // World 
     String field = s3 + s4; 

     String colString = s1.replaceAll("[\\d]", ""); // a 
     String rowString = s1.replaceAll("[\\D]", ""); // 1 
     int col = colString.charAt(0) - 'a'; // 0 
     int row = Integer.parseInt(rowString); 
     TextValue fieldvalue = new TextValue(field); 

     Spreadsheet.changeCell(row, col, fieldvalue); 

     String none0 = tokens.next(); 
     @SuppressWarnings("unused") 
     String none1 = tokens.next(); 
     operation = tokens.nextLine().substring(1); 
     String[] holder = new String[2]; 
     String regex = "(?<=[\\w&&\\D])(?=\\d)"; 
     holder = none0.split(regex); 
     row = Integer.parseInt(holder[1]); 
     col = 0; 
     int counter = -1; 
     char temp = holder[0].charAt(0); 
     char check = 'a'; 
     while(check <= temp){ 
      if(check == temp){ 
       col = counter +1; 
      } 
      counter++; 
      check = (char) (check + 1); 
     } 
     System.out.println(col); 
     System.out.println(row); 
     System.out.println(operation); 
     setField(Value.parseValue(operation)); 

     Spreadsheet.changeCell(row, col, fieldvalue); 

    } 

    public static Value getField() { 
     return field; 
    } 

    public static void setField(Value field) { 
     ParseInput.field = field; 
    } 
} 
+1

あなたがしようとしていることについてもっと詳しく説明できますか? –

+0

しました。私はちょうどa1 =( "hel" + "lo")のような入力を適切に解析する方法を知りたいと思っています。 – user1321012

答えて

0

あなたがスペースを削除しようとしている場合、それはワンライナーだ...これを行うには

input = input.replaceAll("[\\s+\"]", ""); 

他の方法は、単純に定義されたすべての「非単語」文字を(削除することです0-9として、AZ、AZとアンダースコア):

input = input.replaceAll("\\W", ""); 
+0

ありがとう、私はスペースとプラス記号を解析しようとしています。私は例えばa1 =( "hel" + "lo")をタイプすることができるようにしたい、そしてそれはhelloに変わるでしょう。 – user1321012

+0

空白、プラス記号と二重引用符を削除する答えを編集しました。あなたは好きなようにそこに他の文字を追加することができます。また、別の回答を参照してください – Bohemian

-1

StringBuilderを使用してください。 StringはJavaでは不変です。つまり、2つの文字列を結合するたびに新しいインスタンスを作成します。末尾に何かを追加するには、append()メソッドを使用します(これはまったく受け付けません)。

StringBuilder input = ""; 
input.append("hel").append("lo"); 

Hereです。見てみましょう。

関連する問題