1

我有一个像控制台这样的小程序,它允许通过 JTextField 输入命令。

我写了很多命令,输入被转换为字符串>,如果命令有类似 ping IP 属性(ping 192.168.1.1)我子字符串 5(ping),但现在当我想要几个属性时(命令 atr1 art22 atr333 art4444) 我会得到

String command = "command"; //I can make this one
String attribute1 = "atr1"; //I can make this one
String attribute2 = "atr22";
String attribute3 = "atr333";

依此类推,但是无论该属性的长度如何,它都会给我...因为我可以使用子字符串完成所有操作,但是它会定义长度!

4

3 回答 3

5

您可以使用String.split

String cmd = "command atr1 art22 atr333 art4444";
String[] parts = cmd.split(" ");

split 方法允许使用正则表达式。例如,如果空格的数量不同,这很有用:

String cmd = "command        atr1   art22 atr333     art4444";
String[] parts = cmd.split(" +"); // split by spans of one or more spaces
于 2013-06-20T12:19:00.773 回答
1

这里有几个选项,从容易/烦人到最终强大/难以学习

  • "your command pattern".split( " " ) 给你一个字符串数组
  • java.util.Scanner让你一个接一个地取出一个令牌,它有一些方便的帮助器来解析像nextInt()nextFloat()
  • 命令行解析器库,如commons cli。这些是需要学习的一些工作,但是它们具有解决您很快将面临的其他一些问题的好处:)

ps通常在互联网上找到更多帮助您正在寻找的搜索词是“java解析命令行参数”,这几乎就是您想要做的事情,以防您不知道:)

于 2013-06-20T12:25:32.990 回答
0

或者试试这个StringTokenizer 类

StringTokenizer st = new StringTokenizer("这是一个测试");
     而(st.hasMoreTokens()){
         System.out.println(st.nextToken());
     }

于 2013-06-20T12:26:30.517 回答