Java scanner multiple/several 分隔符条件

Java scanner multiple/several delimiter conditions

我在使用扫描仪和定界符找到仅获取城市 1、城市 2 和没有 "km" 的距离的正确方法时遇到了问题。我需要以粗体显示文本。
字符串(示例):

城市 1,国家; 城市2,国家; 145公里

到目前为止我的 Delimitar 因为我真的不知道:

scanner.useDelimiter(";");

我也尝试过使用 string.split("") 但没有成功。

我是否应该先把它分成 3 个部分放在“;”上?并为每个部分做一个新的分隔符?或者有更简单的方法吗?

提前致谢

(编辑以向另一个 post 解释差异: 我用正则表达式试过,也没有运气。我需要在不同字符的多个位置拆分字符串。如果我能用另一个 post.)

解决问题,我不会问

你可以试试String.split()

String data = "city1, country; city2, country; 145 km";
String city1Val = data.split(";")[0].split(",")[0];
String city1Con = data.split(";")[0].split(",")[1];
String city2Val = data.split(";")[1].split(",")[0];
String city2Con = data.split(";")[1].split(",")[1];
String distance = data.split(";")[2];

注意:如果你想要距离作为数字,尝试如下,

distance = distance.replaceAll("[^\d.]", "");

您可以使用 ScannerString#split 的组合:

String source = "city1, country; city2, country; 145 km";
Scanner scanner = new Scanner(source);
scanner.useDelimiter(";");

while (scanner.hasNext()) {
    // trim() removes leading and trailing whitespace
    String line = scanner.next().trim();
    // split the line on either ',' or a space
    String[] split = line.split(",|\s");
    // print the first word
    System.out.println(split[0]);
}