Получить последние три символа из любой строки - Java
Я пытаюсь взять последние три chracters любой строки и сохранить ее как другую переменную String. У меня тяжелое время с моим мыслительным процессом.
String word = "onetwotwoone"
int length = word.length();
String new_word = id.getChars(length-3, length, buffer, index);
Я не знаю, как использовать метод getChars, когда дело доходит до буфера или индекса. Eclipse заставляет меня иметь там. Любые предложения?
Ответы
Ответ 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