Heim  >  Artikel  >  Java  >  Beispiele für verschiedene Methoden zum Abrufen von Teilzeichenfolgen in Java

Beispiele für verschiedene Methoden zum Abrufen von Teilzeichenfolgen in Java

高洛峰
高洛峰Original
2017-01-22 11:15:491688Durchsuche

首先假如有这样一串字符串:

String s = "共 100 页, 1 2 3 4...";

假如我想把"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<String> find(String reg, String str) {
    Matcher matcher = Pattern.compile(reg).matcher(str);
    List<String> list = new ArrayList<String>();
    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<String> list = this.find(reg, str);
    if (list.size() != 0)
      returnStr = list.get(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.println(s.replaceFirst(".*?(\\d+).*", "$1"));

replaceFirst也是支持正则的

注: ?在正则中表示最小匹配模式,$1表示第一个()表示式里面的内容。

总结

以上四种方法中,其中有三种都与正则有关系,所以,要想玩转字符串的操作,具备一定的正则表示式的能力还是很有必要的!

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

更多Java中获取子字符串的几种方法示例相关文章请关注PHP中文网!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn