如何使用子字符串获取动态文本

时间:2017-02-10 10:03:49

标签: java string

我有"Bus is from bangalore to chennai on 02/11/2017"这样的文字。通过使用substring需要获取班加罗尔和钦奈的文本。

但这些都是动态的,有时这可能会像德里或孟买一样变化。

1 个答案:

答案 0 :(得分:0)

如果您的城市一个字,那么您可以使用split,您可以获取具有索引或位置的城市名称,例如:

public static void main(String[] args) {
    String str = "Bus is from bangalore to chennai on 02/11/2017";
    String[] x = str.split(" ");
    System.out.println(x[3]);
    System.out.println(x[5]);
}

这将返回:

bangalore
chennai

两个

如果您不确定,那么可以使用正则表达式:

//this get the city between `from` and `to`

String regexString = Pattern.quote("from ") + "(.*?)" + Pattern.quote(" to");
Pattern pattern = Pattern.compile(regexString);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

//this get the city between ` to` and ` on`    

regexString = Pattern.quote("to ") + "(.*?)" + Pattern.quote(" on");
pattern = Pattern.compile(regexString);
matcher = pattern.matcher(str);
while (matcher.find()) {
    System.out.println(matcher.group(1));
}

如果你的字符串是这样的:

str = "Bus is from bangalore city to chennai city on 02/11/2017";

这将返回:

bangalore city
chennai city

如果您不确定您的String应该是什么样子,那么您可以按照@AhmadWabbi的注释来定义您的城市名称,然后您应该循环抛出您的字符串并扣除名称在您的列表与否。