在Java中给定一个字符串,只需取前X个字母

2022-09-01 13:34:03

有没有类似于Java的C#子字符串?我正在为Blackberry设备创建一个移动应用程序,由于屏幕限制,我只能显示13个字母加3个点作为省略号。

关于如何实现这一目标的任何建议?

我需要基本的Java,而不是一些花哨的技巧,因为我怀疑移动设备可以访问完整的框架。至少在我一年前使用Java ME的经验中是这样。


答案 1

您可以使用 做您想做的事。String.substring()

String str = "please truncate me after 13 characters!";
if (str.length() > 16)
    str = str.substring(0, 13) + "..."

答案 2
String foo = someString.substring(0, Math.min(13, someString.length()));

编辑:仅供一般参考,从番石榴16.0开始,您可以执行以下操作:

String truncated = Ascii.truncate(string, 16, "...");

以最大长度为 16 个字符,并用省略号截断。

旁白

但请注意,截断字符串以按字符显示对于可能需要考虑i18n的任何内容都不是一个好的系统。它(至少)有几个不同的问题:

  1. 您可能希望考虑单词边界和/或空格,以避免在尴尬的地方截断。
  2. 拆分代理项对(尽管只需检查要截断的字符是否是代理项对中的第一个字符,就可以避免这种情况)。
  3. 拆分一个字符和它后面的组合字符(例如,一个后跟一个组合字符,该字符上带有重音符号。ee
  4. 在某些语言中,字符的外观可能会根据它后面的字符而变化,因此,只需截断该字符就会产生甚至看起来与原始字符不同的内容。

由于这些原因(以及其他原因),我的理解是,在UI中显示截断的最佳做法是在屏幕上的正确点实际淡出文本的呈现,而不是截断基础字符串。