【问题标题】:Java scanner multiple/several delimiter conditionsJava 扫描器多个/多个分隔符条件
【发布时间】:2018-01-22 11:00:01
【问题描述】:

使用扫描仪和分隔符,我无法找到仅获取城市 1、城市 2 和不带“公里”的距离的正确方法。我需要以粗体显示文本。
字符串(示例):

city1,国家; city2,国家; 145 公里

到目前为止我的分隔符,因为我真的不知道:

scanner.useDelimiter(";");

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

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

提前致谢

(编辑以解释与另一篇文章的区别: 我用正则表达式尝试过,也没有运气。我需要在不同字符的多个位置拆分字符串。如果我能用另一篇文章解决它,我不会问任何问题。)

【问题讨论】:

标签: java java.util.scanner conditional-statements delimiter


【解决方案1】:

您可以使用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]);
}

【讨论】:

    【解决方案2】:

    你可以试试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.]", "");
    

    【讨论】:

    • 感谢您的回答。另一个答案更适合我。对于距离,我已经使用了一个子字符串:distance.substring(0, distance.length()-3)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多