我正在尝试获取任何字符串的最后三个字符并将其保存为另一个字符串变量。我的思维过程有些艰难。
String word = "onetwotwoone"
int length = word.length();
String new_word = id.getChars(length-3, length, buffer, index);
当涉及到缓冲区或索引时,我不知道如何使用 getChars 方法。Eclipse 让我拥有了那些。有什么建议么?
我正在尝试获取任何字符串的最后三个字符并将其保存为另一个字符串变量。我的思维过程有些艰难。
String word = "onetwotwoone"
int length = word.length();
String new_word = id.getChars(length-3, length, buffer, index);
当涉及到缓冲区或索引时,我不知道如何使用 getChars 方法。Eclipse 让我拥有了那些。有什么建议么?
为什么不只是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!");
}
我会考虑来自 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)
您可以在上述链接下找到更多示例。
这是一些使用正则表达式完成工作的简洁代码:
String last3 = str.replaceAll(".*?(.?.?.?)?$", "$1");
此代码最多返回3;如果少于 3 个,它只返回字符串。
这是如何在一行中没有正则表达式的情况下安全地做到这一点:
String last3 = str == null || str.length() < 3 ?
str : str.substring(str.length() - 3);
通过“安全”,我的意思是如果字符串为空或短于 3 个字符(所有其他答案都不是“安全”),则不会引发异常。
如果您更喜欢更冗长但可能更易于阅读的形式,则上面的代码与此代码的效果相同:
String last3;
if (str == null || str.length() < 3) {
last3 = str;
} else {
last3 = str.substring(str.length() - 3);
}
String newString = originalString.substring(originalString.length()-3);
public String getLastThree(String myString) {
if(myString.length() > 3)
return myString.substring(myString.length()-3);
else
return myString;
}
如果要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
表示要提取的字符串部分。第三个参数是该部分将被放入的数组。最后一个参数给出了缓冲区中操作开始的位置。
如果字符串少于三个字符,则在上述任何一种情况下都会出现异常,因此您可能需要检查一下。
这是我用来获取字符串的最后一个 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
这种方法会很有帮助:
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();
}
getChars
string 方法不返回值,而是将其结果转储到缓冲区(或目标)数组中。index 参数描述目标数组中的起始偏移量。
试试这个链接以获得更详细的getChars
方法描述。
我同意其他人的观点,我认为 substring 是处理你想要完成的事情的更好方法。
您可以使用子字符串
String word = "onetwotwoone"
int lenght = word.length(); //Note this should be function.
String numbers = word.substring(word.length() - 3);
“字符串长度不足或空”保存的替代方法:
String numbers = defaultValue();
try{
numbers = word.substring(word.length() - 3);
} catch(Exception e) {
System.out.println("Insufficient String length");
}
此方法将从末尾返回 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