我试图找出如何解析特定输入。输入如下所示:" [(x,y)(x,y)(x,y).......(x,y)]"
" x"和" y"是整数值。每个变量都被称为" x"和" y"分别。然后将这些值放入Node类中的变量中。然后我有一个这些节点的数组。但是,我正在努力弄清楚如何有效地解析输入以获取x和y值。谢谢你的帮助。
编辑:
我为没有提供任何先前的代码而道歉。我曾尝试使用StringBuffer,但它变得非常混乱,我不知道如何区分单位整数的多位数整数。我并不意味着暗示有人为我编写代码,我只是在询问是否有一些我可以查找的方法,任何人都可以推荐,所以我为此道歉。
答案 0 :(得分:1)
"效率最高"方法可能是手动编码解析器以逐步执行字符串中的位置等。这是很多编码。
幸运的是,简单(但效率较低)的方式并不是太低效。
Pattern
/ Matcher
)匹配并提取[
和]
字符之间的子字符串。String.split(...)
分隔后续)
和(
个字符。使用与前一个分组相同的条目数创建Node[]
。
循环:
x
和y
数字作为字符串。Node
对象并将其添加到数组中。其余的是"只是编码" (并阅读javadocs),我不会因为你 1 而侮辱你的智慧。
1 - @VoodooCoder的方法同样有效......除了对你的智力的暗示侮辱: - )
答案 1 :(得分:1)
您可以使用Regex
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());
}
}
Node是这样的:
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;
}
}
查看更多内容: