我希望能够从字符串的第 8 个字符开始替换任何字符串中的点。如何才能做到这一点?
现在我有这个:
if(tempName.length() > 10)
{
name.setText(tempName.substring(0, 10));
} else {
name.setText(tempName);
}
public static String ellipsize(String input, int maxLength) {
if (input == null || input.length() <= maxLength) {
return input;
}
return input.substring(0, maxLength-3) + "...";
}
此方法将以最大长度输出字符串maxLength
。将所有字符替换MaxLength-3
为...
例如。最大长度=10
abc --> abc
1234567890 --> 1234567890
12345678901 --> 1234567...
如果您想用省略号8th
替换字符后的子字符串,如果字符串长度大于,则可以使用 single 。您甚至不需要事先检查长度。只需使用以下代码:10
String#replaceAll
// No need to check for length before hand.
// It will only do a replace if length of str is greater than 10.
// Breaked into multiple lines for explanation
str = str.replaceAll( "^" // Match at the beginning
+ "(.{7})" // Capture 7 characters
+ ".{4,}" // Match 4 or more characters (length > 10)
+ "$", // Till the end.
"$1..."
);
另一个选项当然是 a substring
,您在其他答案中已经有了。
试图用三个点替换?尝试这个:
String original = "abcdefghijklmn";
String newOne = (original.length() > 10)? original.substring(0, 7) + "...": original;
三元运算符 ( A ? B : C ) 这样做:A 是一个布尔值,如果为真,则计算为 B,在其他地方计算为 C。它可以不时地为您保存if
语句。
几种方法。
substring()
和串联// If > 8...
String dotted = src.substring(0, 8) + "...";
// Else...
或者
String dotted = src.length() > 8 ? src.substring(0, 8) + "..." : src;
// If > 8...
String dotted = src.replaceAll("^(.{8}).+$", "$1...");
// Else...
或者
String dotted = src.length() > 8 ? src.replaceAll("^(.{8}).+$", "$1...") : src;