Java中获取子字符串的几种方法示例
发布于 2020-3-15|
复制链接
摘记: 首先假如有这样一串字符串:String s = "共 100 页, 1 2 3 4...";假如我想把"100"给取出来,该如何做?方法一: 采用split的方式
``` ..
首先假如有这样一串字符串:String s = "共 100 页, 1 2 3 4...";假如我想把"100"给取出来,该如何做?方法一: 采用split的方式
```java
System.out.println(s.split(" ")[1]);或者System.out.println(s.split("\\s")[1]);
```
假如空" "有多个时,可以这样:
```java
System.out.println(s.split("\\s+")[1]);
```
注:split是支持正则的,\s在正则中表示空格,+在正则中表示至少1个,即1个或多个,所以\s+表示至少有一个空格方法二: 采用indexOf的方式
```java
int begin = s.indexOf(" ");
int end = s.indexOf(" ", begin+1);
System.out.println(s.substring(begin+1, end));
```
方法三: 正则封装好的一个正则类:
```java
public class RegExp {
public boolean match(String reg, String str) {
return Pattern.matches(reg, str);
}
public List find(String reg, String str) {
Matcher matcher = Pattern.compile(reg).matcher(str);
List list = new ArrayList();
while (matcher.find()) {
list.add(matcher.group());
}
return list;
}
public String find(String reg, String str, int index) {
Matcher matcher = Pattern.compile(reg).matcher(str);
if (matcher.find()) {
return matcher.group(index);
}
return null;
}
public String findString(String reg, String str) {
String returnStr = null;
List list = this.find(reg, str);
if (list.size() != 0)
returnStr = list.get(0);
return returnStr;
}
}
```
```java
RegExp re = new RegExp();
System.out.println(re.findString("\\d+", s));
System.out.println(re.findString("(?注:正则中\d表示数字,(?方法四: 采用replaceFirst的方式
```java
System.out.println(s.replaceFirst(".*?(\\d+).*", "$1"));
```