【问题标题】:Splitting a string into words and doubles将字符串拆分为单词和双打
【发布时间】:2017-04-26 13:52:59
【问题描述】:

我正在编写一个程序来读取如下所示的文件:

节点:标签布宜诺斯艾利斯:x=131.3456:y=-48.783

我希望程序将每一行拆分为一个数组,其中包含标签的条目,然后是 x 值和 y 值。我已经研究过将 s.split 工具与正则表达式一起使用,但我不知道如何将正在读取的信息存储到程序中。

String[] words=s.split(" ");
"NODE: label=(.+):x=(\d+):y=(\d+)";

谁能给我一些关于如何制作这样一个数组的提示。 我正在寻找有 3 个条目的数组,第一个是标签 Buenous Aires,第二个是 x 值,第三个是 y 值。

【问题讨论】:

  • 将您的数据发布为文本和预期输出的表示
  • 您根本没有提取正则表达式。您刚刚创建了一个字符串,并没有将其分配给任何东西。并且您的标签包含空格,因此您不想拆分
  • 您能否发布包含一些条目的文件的一部分,并在此输入的数组的每个索引中指定您想要的内容。
  • 通过将文件图片更改为文本的编辑,您还可能无意中将label 之后的= 更改为空格。

标签: java arrays regex split


【解决方案1】:

如果你对正则表达式不满意,你可以改为

  1. 在冒号上拆分
  2. 遍历这些字符串(从位置 1 开始)
  3. 等号分割
  4. 提取数据

【讨论】:

    【解决方案2】:

    如果你想使用split()(这是个好主意,因为它可以直接产生想要的字符串数组),你不必像"NODE: label=(.+):x=(\d+):y=(\d+)"那样指定字符串的整体模式,而只需一个定界表达式,如:.=:

    • : - 结束前一个条目
    • . - 匹配 xy
    • = - 下一个条目的前奏

        String s = "NODE: label=Buenous Aires:x=131.3456:y=-48.783";
        String[] words = s.substring(12).split(":.=");
    

    substring(12) 跳过前面的 NODE: label=

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 2014-06-09
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多