1

このCodingBatの問題に従って、私は次のことをしようとしています:

文字列を指定すると、最初または最後の文字が 'x' の場合、それらの 'x' 文字を除いた文字列を返し、それ以外の場合は文字列を変更せずに返します。

私のコード:

public String withoutX(String str) {
    if (str.startsWith("x")) {
        str = str.replace(str.substring(0, 1), "");
    }
    if (str.endsWith("x")) {
        str = str.replace(str.substring(str.length()-1), "");
    }
    return str;
}

xこのコードは、文字列の最初と最後の文字だけでなく、すべての文字を置き換えます。なぜこれが起こるのか、それを解決するための良い方法は何ですか?

4

3 に答える 3

4

関数を使用できますstring.replaceAll

string.replaceAll("^x|x$", "");

上記のコードはx、最初または最後にあった を置き換えます。x先頭または末尾にno がない場合は、元の文字列を変更せずに返します。

于 2015-04-01T12:41:25.400 に答える
1

メソッドの SDK からreplace:

この文字列内のすべての oldChar を newChar に置き換えた新しい文字列を返します。

置換せずにこれを解決できます:

public String withoutX(String str) {   
    if (str == null) { 
        return null;
    }

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

    return str;
}
于 2015-04-01T12:44:11.210 に答える
-1

最初の文字にreplaceFirstを使用するか、両側を1文字ずつ部分文字列にすることができます

public static String withoutX(String str) {
        if (str.startsWith("x")) {
            str = str.replaceFirst("x", "");
        }
        if (str.endsWith("x")) {
            str = str.substring(0,str.length() - 1);
        }

        return str;
    }
于 2015-04-01T14:24:44.093 に答える