首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不检查字符串大小或超出范围的情况下获得字符串的前n个字符?

如何在不检查字符串大小或超出范围的情况下获得字符串的前n个字符?
EN

Stack Overflow用户
提问于 2009-10-18 03:43:24
回答 5查看 308.4K关注 0票数 189

在Java语言中,如何在不进行大小检查(内联是可接受的)或冒着IndexOutOfBoundsException风险的情况下获得字符串的前几个n字符

EN

回答 5

Stack Overflow用户

发布于 2014-09-26 21:26:19

为此,Apache Commons Lang有一个StringUtils.left方法。

代码语言:javascript
复制
String upToNCharacters = StringUtils.left(s, n);
票数 55
EN

Stack Overflow用户

发布于 2013-10-03 16:08:55

代码语言:javascript
复制
String upToNCharacters = String.format("%."+ n +"s", str);

如果n是一个变量,那就很糟糕了(所以你必须构造格式字符串),但是如果是一个常量,那就很清楚了:

代码语言:javascript
复制
String upToNCharacters = String.format("%.10s", str);

docs

票数 14
EN

Stack Overflow用户

发布于 2009-10-18 04:02:09

有一类问题,所以有时不太合理,这个问题非常接近:-)

也许你可以解释一下你不喜欢使用你排除的两种方法中的一种。

如果只是因为您不想在代码中填充if语句或异常捕获代码,一种解决方案是使用一个帮助函数来为您处理它,如下所示:

代码语言:javascript
复制
static String substring_safe (String s, int start, int len) { ... }

它将预先检查长度并采取相应行动(返回较小的字符串或填充空格)。

然后你就完全不用在你的代码中担心它了,只要调用:

代码语言:javascript
复制
String s2 = substring_safe (s, 10, 7);

而不是:

代码语言:javascript
复制
String s2 = s.substring (10,7);

这将在你似乎担心的情况下工作(基于你对其他答案的评论),在做大量字符串构建的事情时不会破坏代码流。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1583940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档