0
private int Index(String[] match,String keyword){
   int m=0;
   keyword=keyword+"1";
   match[m]=match[m]+"1";
   System.out.println("match:"+match[m]);
   System.out.println("keyword:"+keyword);
   System.out.println(match[m].equals(keyword));
   while(!(match[m].equals("")) && !(match[m].equals(null))){
           System.out.println("yes");
       if(match[m].equals(keyword)){
         break;
       }
       else
           m++;
   }
   return m;
}

そして、私は次の出力を取得しています(キーワードの値はsparktgです):

match:sparktg
1
keyword:sparktg1
false

match [m]の場合、「sparktg」と「1」の間に改行があるのはなぜですか?

4

4 に答える 4

2

入力を制御できないtrim()場合は、入力を使用する前にを実行できます。\nこれにより、スペースがなくなります。

if(match[m] != null) {
   System.out.println("match:"+match[m].trim());
}
if(keyword != null) {
   System.out.println("keyword:"+keyword.trim());
}

これを行うためのユーティリティメソッドを作成することで、よりクリーンにすることができます。

public String sanitize(String input) {
    return input != null ? input.trim() : null;
}

そしてそれをそのように使用します:

match[m] = sanitize(match[m]);
keyword = sanitize(keyword);
于 2012-06-15T11:32:43.997 に答える
1

私が見ることができる唯一の理由は、match[0]すでに改行で終わっているということです。match[0]を追加する前に、出力して確認する必要があり"1"ます。次の形式で出力することをお勧めします。

System.out.println("|"+match[0]+"|");

...したがって、を使用して|、文字列の開始位置と終了位置を明確にマークします。

trim()改行を含む空白を切り取るために使用できます。

match[m] = match[m].trim() + "1";

ただし、これによりスペースとタブも削除され、問題になる場合と問題にならない場合があります。文字列を比較するときは、安全のために両方の文字列を最初にトリミングすることがよくありますが、空白を無視している場合に限ります。

于 2012-06-15T11:34:08.973 に答える
0

これを試して。解析する前に、すべての新しい行を置き換えます。

private static int Index(String[] match,String keyword){
       int m=0;

       for(int k=0;k<match.length;k++){
           if(match[k]!=null)
           match[k]= match[k].replace("\n", "");

       }
       if(keyword!=null)
           keyword= keyword.replace("\n", "");

       keyword=keyword+"1";
       match[m]=match[m]+"1";
       System.out.println("match:"+match[m]);
       System.out.println("keyword:"+keyword);
       System.out.println(match[m].equals(keyword));
       while(!(match[m].equals("")) && !(match[m].equals(null))){
               System.out.println("yes");
           if(match[m].equals(keyword)){
             break;
           }
           else
               m++;
       }
       return m;
    }
于 2012-06-15T11:36:03.873 に答える
0

それは答えではありませんが、コードについての表記です

match[m].equals(null)をスローしNullPointerExceptionます。match[m]nullに等しくないかどうかを確認する正しいmathc[m] != null方法は、オブジェクトのメソッドを呼び出す前です。したがって、これを使用します。

match[m] != null && !match[m].equals("")

これの代わりに:

!match[m].equals("") && !match[m].equals(null)
于 2012-06-15T12:07:41.813 に答える