首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.subString()和String.subSequence()有什么区别?

String.subString()和String.subSequence()有什么区别?
EN

Stack Overflow用户
提问于 2013-03-19 16:45:55
回答 9查看 55.8K关注 0票数 37

String.subSequence()具有以下javadoc:

返回一个新的字符序列,该字符序列是此序列的子序列。对此表单方法的调用 Str.subSequence(开始,结束) 行为与调用str.substring完全相同(开始,结束) 定义此方法是为了使String类能够实现CharSequence接口。

有人能解释吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2013-03-19 17:13:30

使用str.subSequence(begin, end)返回一个CharSequence,它是字符串的一种只读形式,表示为一个字符序列。例如:

代码语言:javascript
复制
String string = "Hello";
CharSequence subSequence = string.subSequence(0, 5);

它是只读的,也就是说,如果不实例化一个新的chars实例,就不能在CharSequence中更改CharSequence

如果必须使用str.subSequence(begin, end),则可以将结果转换为String

代码语言:javascript
复制
String string = "Hello";
String subSequence = (String) string.subSequence(0, 5);

并使用所有普通的String操作符,如subSequence += " World";

票数 26
EN

Stack Overflow用户

发布于 2018-04-06 08:01:36

要理解这一点,您首先需要知道的是,子字符串子序列之间的区别是什么?

子字符串是字符串的连续部分或子部分。

鉴于

子序列是字符串或序列的一部分,可能是连续的,也可能不是连续的,但元素的顺序是维持的。

例如,假设我们有以下字符串:

代码语言:javascript
复制
str_a="hello there"
str_b="hello"
str_c="ello th"
str_d="hllo"
str_e="ho hre"
str_f="there hello"

str_bstr_a的子字符串,str_c也是str_a的子字符串,但是str_d不是str_a的子字符串,因为这个子字符串不是连续的。

现在,随着顺序的保持,所有子字符串都是子序列。

str_dstr_a的子序列,str_e也是str_a的子序列,但是str_f不是str_a的子序列,因为在这种情况下,顺序不被维护。

现在,对于java,对于javadoc中的这些方法没有适当的说明。

票数 53
EN

Stack Overflow用户

发布于 2013-03-19 16:48:12

子序列

子序列是子字符串、后缀和前缀的概括。寻找两个或多个字符串的子序列最长的字符串称为最长的公共子序列问题。

例如:字符串"anna“是字符串”香蕉“的子序列:

代码语言:javascript
复制
banana
 || ||
 an na

子字符串

字符串的子字符串是字符串后缀的前缀,相当于前缀的后缀。如果一个字符串是另一个字符串的子字符串,那么它也是一个子字符串,这是一个更普遍的概念。

例如:字符串"ana“是香蕉的子字符串(和子序列),有两个不同的偏移:

代码语言:javascript
复制
banana
 |||||
 ana||
   |||
   ana

阅读更多的这里

但就Java而言,正如javadoc中明确指出的那样,它们的使用没有任何区别。另外,正如这里所述,方法subSequence仅在类String中实现,以使其与CharSequence接口保持兼容。这个方法的名字确实是个用词不当的方法。

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

https://stackoverflow.com/questions/15505508

复制
相关文章

相似问题

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