java中获取⼦字符串_Java中获取⼦字符串的⼏种⽅法⽰例⾸先假如有这样⼀串字符串:
String s = "共 100 页, 1 2 ";
假如我想把"100"给取出来,该如何做?
⽅法⼀: 采⽤split的⽅式System.out.println(s.split(" ")[1]);或者System.out.println(s.split("\\s")[1]);
假如空" "有多个时,可以这样:System.out.println(s.split("\\s+")[1]);
注:split是⽀持正则的,\s在正则中表⽰空格,+在正则中表⽰⾄少1个,即1个或多个,所以\s+表⽰⾄少有⼀个空格
⽅法⼆: 采⽤indexOf的⽅式int begin = s.indexOf(" ");
int end = s.indexOf(" ", begin+1);
System.out.println(s.substring(begin+1, end));
⽅法三: 正则
封装好的⼀个正则类:public class RegExp {
public boolean match(String reg, String str) {
return Pattern.matches(reg, str);
}
public List find(String reg, String str) {
Matcher matcher = Patternpile(reg).matcher(str);
List list = new ArrayList();
while (matcher.find()) {
list.up());
}
return list;
}
public String find(String reg, String str, int index) {
Matcher matcher = Patternpile(reg).matcher(str);
if (matcher.find()) {
up(index);
}
return null;
}
public String findString(String reg, String str) {
java中split的用法String returnStr = null;
List list = this.find(reg, str);
if (list.size() != 0)
returnStr = (0);
return returnStr;
}
}RegExp re = new RegExp();
System.out.println(re.findString("\\d+", s));
System.out.println(re.findString("(?<=共).*?\\d+", s).trim());
注:正则中\d表⽰数字,(?<=共)是⼀种预查模式
⽅法四: 采⽤replaceFirst的⽅式System.out.placeFirst(".*?(\\d+).*", "$1"));
replaceFirst也是⽀持正则的
注: ?在正则中表⽰最⼩匹配模式,$1表⽰第⼀个()表⽰式⾥⾯的内容。
总结
以上四种⽅法中,其中有三种都与正则有关系,所以,要想玩转字符串的操作,具备⼀定的正则表⽰式的能⼒还是很有必要的!以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。更多Java中获取⼦字符串的⼏种⽅法⽰例相关⽂章请关注PHP中⽂⽹!
本⽂原创发布php中⽂⽹,转载请注明出处,感谢您的尊重!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论