0


この方法を使用して、文字列の両端からセミコロンを切り捨てようとしています:

private String truncateSemicolon(String inputString){
    String outputString=inputString;
    boolean isTruncated = false;
    Log.i(TAG, "*************I N P U T   T O  T R U N C A T E ************* "+outputString);
    while(!isTruncated){
        if(outputString.startsWith(";")){

            outputString=outputString.substring(1,outputString.length());
            Log.i(TAG, "START *************************************"+outputString);
        }
        if(outputString.endsWith(";")){

            outputString=outputString.substring(0,(outputString.length()-1));
            Log.i(TAG, "************************************* END"+outputString);
        }
        if(!outputString.endsWith(";") && !outputString.startsWith(";")){
            isTruncated=true;
        }
    }       
    Log.i(TAG, "*************O U T P U T   T O  T R U N C A T E ************* "+outputString);
    return outputString;
}

しかし、これは最初からのみ切り捨てます。
何が問題ですか??

4

8 に答える 8

2

あなたのコードは正しいです

このコードは最初の「;」のみを削除します そして最後 ";" は正しい?

最後の「;」の場合は削除できません 次のスペースがあります ex ( " ; " )

スペースを無視したくない場合

trim() メソッドを使用する

于 2013-08-30T04:50:01.897 に答える
2

簡単な手順に従うだけで、コードは正常に機能します。

String outputString=inputString.trim();
于 2013-08-30T05:13:27.310 に答える
0

これを達成するための複数の方法

String yourDesiredText= anytext.replaceAll(";$", "");

OR

yourDesiredText= yourDesiredText.replaceAll(";$", "");

OR

if (yourDesiredText.endsWith(";")) {
    yourDesiredText= yourDesiredText.substring(0, yourDesiredText.length() - 1);
}

文字列は不変です。つまり、それらを変更することはできません。

したがって、テキストを再割り当てするか、新しい変数に設定する必要があります。

于 2015-04-22T13:00:50.213 に答える
0

セミコロン「;」を削除するより良い方法 あなたの文字列からString.replaceAll()を使用することです。

String replacementString = inputString.replaceAll("^;|$;","");

于 2013-08-30T04:29:57.377 に答える
0

この一行を試してみると、あなたが幸せになるかもしれません

String outputString=inputString.replace(";","");
于 2013-08-30T04:30:29.230 に答える
0
    if(outputString.startsWith(";")){

        outputString=outputString.substring(1,outputString.length());
        Log.i(TAG, "START *************************************"+outputString);
    }
    if(outputString.endsWith(";")){

        outputString=outputString.substring(0,(outputString.length()-1));
        Log.i(TAG, "************************************* END"+outputString);
    }

beginIndexはpublic String substring(int beginIndex, int endIndex) 開始インデックス (包括的) であり、endIndex は終了インデックス (排他的) です。

だから outputString=outputString.substring(1,(outputString.length()));に変更 outputString=outputString.substring(1,(outputString.length() - 1));

同様に 2 番目の if ステートメントで変更します

outputString=outputString.substring(0,(outputString.length()-1));

outputString=outputString.substring(0,(outputString.length()-2));

だからあなたのコードは

    if(outputString.startsWith(";")){

        outputString=outputString.substring(1,outputString.length()-1);
        Log.i(TAG, "START *************************************"+outputString);
    }
    if(outputString.endsWith(";")){

        outputString=outputString.substring(0,(outputString.length()-2));
        Log.i(TAG, "************************************* END"+outputString);
    }
于 2013-08-30T04:32:10.537 に答える
0

あなたのコードはすでに正しく動作しています。部分文字列を 1 回だけ実行すると、関数がより効率的になります。

private String truncateSemicolon(final String inputString) {
    int startPos = inputString.startsWith(";") ? 1 : 0;
    if(inputString.endsWith(";")) {
        return inputString.substring(startPos, inputString.length() - 1);
    } else {
        return startPos == 0 ? inputString : inputString.substring(startPos);
    }
}
于 2013-08-30T04:59:14.847 に答える