71

任意の文字列の最後の 3 文字を取得して、別の文字列変数として保存しようとしています。私は自分の思考プロセスに苦労しています。

String word = "onetwotwoone"
int length = word.length();
String new_word = id.getChars(length-3, length, buffer, index);

バッファまたはインデックスに関して getChars メソッドを使用する方法がわかりません。Eclipseは私にそれらをそこに持たせています。助言がありますか?

4

12 に答える 12

194

だけではないのはなぜString substr = word.substring(word.length() - 3)ですか?

アップデート

Stringを呼び出す前に、 が少なくとも 3 文字の長さであることを確認してくださいsubstring()

if (word.length() == 3) {
  return word;
} else if (word.length() > 3) {
  return word.substring(word.length() - 3);
} else {
  // whatever is appropriate in this case
  throw new IllegalArgumentException("word has fewer than 3 characters!");
}
于 2013-03-06T16:59:23.103 に答える
31

Apache Commons Lang のクラスの rightメソッドを検討します: http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#right(java.lang.String,% 20int)StringUtils

安全。NullPointerExceptionまたはは得られませんStringIndexOutOfBoundsException

使用例:

StringUtils.right("abcdef", 3)

上記のリンクの下に他の例があります。

于 2016-10-03T08:52:34.293 に答える
14

正規表現を使用してジョブを実行する簡潔なコードを次に示します。

String last3 = str.replaceAll(".*?(.?.?.?)?$", "$1");

このコードは最大3 を返します。3 つ未満の場合は、文字列を返します。

これは、1行で正規表現なしで安全に行う方法です:

String last3 = str == null || str.length() < 3 ? 
    str : str.substring(str.length() - 3);

「安全に」とは、文字列が null または 3 文字未満の場合に例外をスローしないことを意味します (他のすべての回答は「安全」ではありません)。


上記のコードは、より冗長で読みやすい形式を好む場合、実質的にはこのコードと同じです。

String last3;
if (str == null || str.length() < 3) {
    last3 = str;
} else {
    last3 = str.substring(str.length() - 3);
}
于 2013-03-06T17:02:21.627 に答える
7

String newString = originalString.substring(originalString.length()-3);

于 2013-03-06T16:59:23.593 に答える
5
public String getLastThree(String myString) {
    if(myString.length() > 3)
        return myString.substring(myString.length()-3);
    else
        return myString;
}
于 2013-03-06T17:01:16.070 に答える
3

String最後の 3 文字で構成したい場合は、次を使用できますsubstring(int)

String new_word = word.substring(word.length() - 3);

実際に文字配列としてそれらが必要な場合は、次のように記述する必要があります

char[] buffer = new char[3];
int length = word.length();
word.getChars(length - 3, length, buffer, 0);

getChars抽出する文字列の部分を示す最初の 2 つの引数。3 番目の引数は、その部分が配置される配列です。最後の引数は、操作が開始されるバッファ内の位置を示します。

文字列が 3 文字未満の場合、上記のいずれかのケースで例外が発生するため、それを確認することをお勧めします。

于 2013-03-06T17:01:17.517 に答える
0

文字列メソッドはgetChars値を返さず、代わりにその結果をバッファー (または宛先) 配列にダンプします。index パラメータは、宛先配列の開始オフセットを記述します。

メソッドのより詳細な説明については、このリンクを試してくださいgetChars

これについては他の人に同意します。達成しようとしていることを処理するには、部分文字列の方が良い方法だと思います。

于 2013-03-06T17:00:31.547 に答える
0

部分文字列を使用できます

String word = "onetwotwoone"
int lenght = word.length(); //Note this should be function.
String numbers = word.substring(word.length() - 3);
于 2013-03-06T17:00:46.323 に答える
0

「文字列の長さが不十分またはnull」の代替方法保存:

String numbers = defaultValue();
try{
   numbers = word.substring(word.length() - 3);
} catch(Exception e) {
   System.out.println("Insufficient String length");
}
于 2019-01-10T13:54:04.797 に答える
0

このメソッドは、末尾から x 個の文字数を返します。

public static String lastXChars(String v, int x) {
    return v.length() <= x ? v : v.substring(v.length() - x);
}

//利用方法

System.out.println(lastXChars("stackoverflow", 4)); // flow
于 2022-03-02T12:31:14.557 に答える