0

我希望能够从字符串的第 8 个字符开始替换任何字符串中的点。如何才能做到这一点?

现在我有这个:

if(tempName.length() > 10)
{
     name.setText(tempName.substring(0, 10));
} else {
     name.setText(tempName);
}
4

4 回答 4

4
   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...

于 2013-07-27T10:46:56.023 回答
4

如果您想用省略号8th替换字符后的子字符串,如果字符串长度大于,则可以使用 single 。您甚至不需要事先检查长度。只需使用以下代码:10String#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,您在其他答案中已经有了。

于 2013-07-27T10:36:04.793 回答
3

试图用三个点替换?尝试这个:

String original = "abcdefghijklmn";

String newOne = (original.length() > 10)? original.substring(0, 7) + "...": original;

三元运算符 ( A ? B : C ) 这样做:A 是一个布尔值,如果为真,则计算为 B,在其他地方计算为 C。它可以不时地为您保存if语句。

于 2013-07-27T10:36:14.400 回答
0

几种方法。

1.substring()和串联

// If > 8...
String dotted = src.substring(0, 8) + "...";
// Else...

或者

String dotted = src.length() > 8 ? src.substring(0, 8) + "..." : src;

2. 正则表达式

// If > 8...
String dotted = src.replaceAll("^(.{8}).+$", "$1...");
// Else...

或者

String dotted = src.length() > 8 ? src.replaceAll("^(.{8}).+$", "$1...") : src;
于 2013-07-27T11:07:42.437 回答