Подтвердить что ты не робот

Получить последние три символа из любой строки - Java

Я пытаюсь взять последние три chracters любой строки и сохранить ее как другую переменную String. У меня тяжелое время с моим мыслительным процессом.

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

Я не знаю, как использовать метод getChars, когда дело доходит до буфера или индекса. Eclipse заставляет меня иметь там. Любые предложения?

4b9b3361

Ответ 1

Почему не просто String substr = word.substring(word.length() - 3)?

Обновление

Пожалуйста, убедитесь, что перед тем, как вызывать substring():, String имеет длину не менее 3 символов:

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 less than 3 characters!");
}

Ответ 2

Я бы рассмотрел метод right из класса StringUtils из Apache Commons Lang: http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#right(java.lang.String,%20int)

Это безопасно. Вы не получите NullPointerException или StringIndexOutOfBoundsException.

Пример использования:

StringUtils.right("abcdef", 3)

В приведенной выше ссылке вы можете найти больше примеров.

Ответ 3

Вот несколько краткий код, который выполняет задание с использованием регулярного выражения:

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

Этот код возвращает до 3; если их меньше 3, он просто возвращает строку.

Как сделать это безопасно без регулярного выражения в одной строке:

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);
}

Ответ 4

public String getLastThree(String myString) {
    if(myString.length() > 3)
        return myString.substring(myString.length()-3);
    else
        return myString;
}

Ответ 5

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

Ответ 6

Если вы хотите, чтобы String состоял из трех последних символов, вы можете использовать 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 обозначают часть строки, которую вы хотите извлечь. Третий аргумент - это массив, в который будет помещена эта часть. И последний аргумент дает позицию в буфере, где начинается операция.

Если строка содержит менее трех символов, вы получите исключение в любом из перечисленных случаев, поэтому вы можете проверить это.

Ответ 7

Этот метод будет полезен:

String rightPart(String text,int length)
{
    if (text.length()<length) return text;
    String raw = "";
    for (int i = 1; i <= length; i++) {
        raw += text.toCharArray()[text.length()-i];
    }
    return new StringBuilder(raw).reverse().toString();
}

Ответ 8

Строковый метод getChars не возвращает значение, вместо этого он выгружает свой результат в ваш буфер (или целевой) массив. Параметр index описывает начальное смещение в вашем целевом массиве.

Попробуйте ссылку для более подробного описания метода getChars.

Я согласен с другими в этом, я думаю, что подстрока будет лучшим способом справиться с тем, что вы пытаетесь выполнить.

Ответ 9

Вы можете использовать подстроку

String word = "onetwotwoone"
int lenght = word.length(); //Note this should be function.
String numbers = word.substring(word.length() - 3);

Ответ 10

Альтернативный способ сохранения "недостаточной длины строки или нуля":

String numbers = defaultValue();
try{
   numbers = word.substring(word.length() - 3);
} catch(Exception e) {
   System.out.println("Insufficient String length");
}

Ответ 11

Вот метод, который я использую, чтобы получить последний xx строки:

public static String takeLast(String value, int count) {
    if (value == null || value.trim().length() == 0 || count < 1) {
        return "";
    }

    if (value.length() > count) {
        return value.substring(value.length() - count);
    } else {
        return value;
    }
}

Тогда используйте это так:

String testStr = "this is a test string";
String last1 = takeLast(testStr, 1); //Output: g
String last4 = takeLast(testStr, 4); //Output: ring