如何在Java中解析非常特定的输入
我试图弄清楚如何解析特定的输入。输入如下:“[(x,y)(x,y)(x,y)…(x,y)]” “x”和“y”是整数值。每个变量分别进入称为“x”和“y”的变量。然后将这些值放入节点类中的变量中。然后我有一个这些节点的数组。然而,我正在努力找出如何有效地解析输入以获得x和y值。谢谢你的帮助 编辑: 我很抱歉没有提供任何以前的代码。我曾尝试使用StringBuffer,但它变得非常混乱,我不知道如何区分多位数整数和单位数整数。我并不是想暗示有人为我编写代码,我只是想问,是否有人可以推荐我可以查找的各种方法,因此我对此表示歉意。最有效的方法可能是手工编写解析器代码,以逐步遍历字符串中的位置等等。这需要大量的编码 幸运的是,简单(但效率较低)的方法并不太低效如何在Java中解析非常特定的输入,java,parsing,Java,Parsing,我试图弄清楚如何解析特定的输入。输入如下:“[(x,y)(x,y)(x,y)…(x,y)]” “x”和“y”是整数值。每个变量分别进入称为“x”和“y”的变量。然后将这些值放入节点类中的变量中。然后我有一个这些节点的数组。然而,我正在努力找出如何有效地解析输入以获得x和y值。谢谢你的帮助 编辑: 我很抱歉没有提供任何以前的代码。我曾尝试使用StringBuffer,但它变得非常混乱,我不知道如何区分多位数整数和单位数整数。我并不是想暗示有人为我编写代码,我只是想问,是否有人可以推荐我可以查找的各
- 使用正则表达式(
/模式
)匹配并提取匹配器
和[
字符之间的子字符串]
- 使用
在连续的String.split(…)
和)
字符之间进行拆分(
- 创建
,其条目数与上一次拆分时的条目数相同节点[]
- 在循环中:
- 使用正则表达式匹配并提取
和x
数字作为字符串y
- 将字符串转换为数字
- 构建
对象并将其添加到数组中节点
- 使用正则表达式匹配并提取
1-@伏都教的方法同样有效…除了暗示对你的智力的侮辱:-)你可以使用正则表达式
public static void main(String [] args) {
String input = "[(1,2) (3,4) (5,6)]";
Pattern pattern = Pattern.compile("(\\d+),(\\d+)");
Matcher matcher = pattern.matcher(input);
List<Node> nodes = new ArrayList<Node>();
Node node = null;
while (matcher.find()) {
node = new Node();
node.setX(Integer.parseInt(matcher.group(1)));
node.setY(Integer.parseInt(matcher.group(2)));
nodes.add(node);
System.out.printf("x=%d, y=%d\n", node.getX(), node.getY());
}
}
查看更多信息:
”(
)分割。然后解析x,y
部分是很明显的。举个例子,有很多方法。如果你提供一些非常具体的代码来讨论,包括演示如何(不)进行讨论,对我们来说会更容易工作,以及您试图解决的问题。对于适当的正则表达式,不需要第1点和第2点;)
public class Node {
private int x;
private int y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}