java的string的subSequence有什么用
时间: 2023-12-14 12:39:53 浏览: 35
Java中的String类的subSequence方法用于从一个字符串中获取一个子序列。它返回一个CharSequence对象,这个对象是原始字符串的一个子序列,从指定的开始索引(包括)到指定的结束索引(不包括)。
使用subSequence方法可以方便地从一个字符串中获取一个子串,而不需要额外创建一个新的字符串对象,这样可以节省内存空间。另外,CharSequence是一个接口,它是一个通用的字符序列类型,可以用于表示多种不同类型的字符序列,比如String、StringBuilder、StringBuffer等等。
示例代码:
```java
String str = "Hello, World!";
CharSequence sub = str.subSequence(7, 12);
System.out.println(sub); // 输出 "World"
```
上述代码中,我们从字符串"Hello, World!"中获取了一个子序列,从索引7(包括)到索引12(不包括),即"World"。
相关问题
用Java实现最长公共子序列
最长公共子序列问题是算法中一个经典的问题,通常可以使用动态规划算法来解决。下面是使用Java实现最长公共子序列的代码:
```java
public class LongestCommonSubsequence {
public static void main(String[] args) {
String str1 = "ABCDGHLQR";
String str2 = "AEDPHR";
int m = str1.length();
int n = str2.length();
System.out.println("Length of Longest Common Subsequence is " + lcs(str1, str2, m, n));
}
public static int lcs(String str1, String str2, int m, int n) {
int[][] lcsArray = new int[m + 1][n + 1];
for (int i = 0; i <= m; i++) {
for (int j = 0; j <= n; j++) {
if (i == 0 || j == 0) {
lcsArray[i][j] = 0;
} else if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
lcsArray[i][j] = 1 + lcsArray[i - 1][j - 1];
} else {
lcsArray[i][j] = Math.max(lcsArray[i - 1][j], lcsArray[i][j - 1]);
}
}
}
return lcsArray[m][n];
}
}
```
此代码中,我们首先定义了两个字符串变量 str1 和 str2,以及它们的长度 m 和 n。然后我们创建了一个二维数组lcsArray,用于存储计算过程中的中间值。
接下来,我们使用两层循环遍历str1和str2,并在每个位置上计算最长公共子序列的长度。如果str1和str2在当前位置上的字符相同,我们将lcsArray[i][j]设为1加上左上角位置的值;否则,我们将lcsArray[i][j]设置为上方或左方的值中的最大值。
最后,我们返回lcsArray[m][n],即最长公共子序列的长度。
string截取字符串
你可以使用不同的方法来截取字符串,以下是几种常见的方法:
1. 使用substring方法:
```java
String str = "Hello World";
String substr = str.substring(6); // 从索引6开始截取到字符串结尾
System.out.println(substr); // 输出 "World"
// 也可以指定截取的开始和结束索引
String substr2 = str.substring(0, 5); // 截取从索引0到索引5(不包括索引5)的子字符串
System.out.println(substr2); // 输出 "Hello"
```
2. 使用subsequence方法:
```java
String str = "Hello World";
CharSequence subseq = str.subSequence(6, 11); // 截取从索引6到索引11(不包括索引11)的子字符序列
System.out.println(subseq); // 输出 "World"
```
3. 使用StringTokenizer类进行分隔:
```java
String str = "Hello,World";
StringTokenizer tokenizer = new StringTokenizer(str, ",");
String substr = tokenizer.nextToken(); // 获取第一个分隔符之前的子字符串
System.out.println(substr); // 输出 "Hello"
```
4. 使用正则表达式:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String str = "Hello World";
Pattern pattern = Pattern.compile("W.*"); // 匹配以字母W开头的所有字符
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String substr = matcher.group(); // 获取匹配到的子字符串
System.out.println(substr); // 输出 "World"
}
```
这些是一些常见的截取字符串的方法,你可以根据具体的需求选择适合的方法。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)