![]() |
1
14
我假设您正试图使命令界面尽可能地宽容。如果是这种情况,我建议您使用类似的算法:
|
![]() |
2
19
我很喜欢正则表达式。只要命令字符串相当简单,就可以编写一些regex,这些regex可能需要几页代码才能手动解析。 我建议你退房 http://www.regular-expressions.info 一个很好的介绍正则表达式,以及Java的具体例子。 |
![]() |
3
13
手动解析很有趣…开始时:) 在实践中,如果命令不是非常复杂,您可以用命令行解释器中使用的方法来处理它们。您可以使用的库列表如下: http://java-source.net/open-source/command-line . 我想你可以从 apache commons CLI 或 args4j (使用注释)。它们有很好的文档记录,而且使用起来非常简单。它们自动处理解析,您唯一需要做的就是读取对象中的特定字段。 如果您有更复杂的命令,那么创建一个形式语法可能是一个更好的主意。有一个非常好的库,其中包含图形编辑器、调试器和语法解释器。它叫 ANTLR (和编辑 ANTLRWorks )它是免费的:)还有一些示例语法和教程。 |
![]() |
4
7
我会看看 Java migrations 属于 Zork 向一个简单的 Natural Language Processor (通过标记化或regex驱动)例如(通过此链接): public static boolean simpleNLP( String inputline, String keywords[]) { int i; int maxToken = keywords.length; int to,from; if( inputline.length() = inputline.length()) return false; // check for blank and empty lines while( to >=0 ) { to = inputline.indexOf(' ',from); if( to > 0){ lexed.addElement(inputline.substring(from,to)); from = to; while( inputline.charAt(from) == ' ' && from = keywords.length) { status = true; break;} } } return status; } … 在我的书中,任何能让程序员有理由再看一眼zork的东西都是好的,只要当心咕噜声就行了。 … |
![]() |
5
6
Sun本身建议不要使用StringTokenizer,而是使用String.Spilt方法。 您还需要查看模式类。 |
![]() |
6
6
对安特尔/安特尔工厂的另一次投票。如果您创建文件的两个版本,一个是用Java代码来实际执行命令,另一个则没有(仅使用语法),那么您有一个可执行的语言规范,这对于测试来说是很好的,对于文档来说是一个福音,如果您决定将它移植到一个大的时间里。 |
![]() |
7
4
如果这是解析命令行,我建议使用 Commons Cli .
|
![]() |
8
4
尝试 JavaCC Java的解析器生成器。 它有许多用于解释语言的特性,并且在Eclipse上得到了很好的支持。 |
![]() |
9
2
@在这里编码你的代码,有点清理和通过Eclipse( CTRL + 转移 + f )插在后面的是:) 包括每行前面的四个空格。
|
![]() |
10
1
在空间上使用一个简单的字符串标记器是可行的,但是有很多方法可以做到这一点。 下面是一个使用标记器的例子:
然后标记可以进一步用于参数。这都假定参数中没有使用空格…因此,您可能希望使用自己的简单解析机制(例如,获取第一个空格,并将前面的文本用作操作,或者使用正则表达式(如果您不介意速度的影响),将其抽象出来,以便可以在任何地方使用。 |
![]() |
11
1
当命令的分隔符字符串完全相同时,建议使用strinktokenizer类: 但是当分隔符变化或复杂时,建议您使用正则表达式,wich可以由字符串类本身使用,方法split,因为1.4。它使用java.util.regex包中的模式类 |
![]() |
12
1
如果语言很简单就像 动名词 然后用手分裂很有效。 如果更复杂的话,您应该真正研究一个工具,比如antlr或javacc。 我有一个关于Antlr(v2)的教程 http://javadude.com/articles/antlrtut 这会让你了解它是如何工作的。 |
![]() |
13
1
JCommander 看起来相当不错,虽然我还没有测试过。 |
![]() |
14
1
如果文本包含一些分隔符,则可以
|
![]() |
15
1
split方法可以将字符串拆分为指定子字符串表达式的数组
当 JDK 解释:什么时候 极限值>0 子数组长度上限,也就是说,如果可能,可以 极限-1 子除法,保留为子字符串(除了按限制1倍字符有字符串拆分结束); 极限<0 表示数组长度没有限制;
极限=0
字符串结尾空字符串将被截断。
|
|
user29759326 · 如何返回递归函数中的最后一个值? 5 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 6 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 6 月前 |
![]() |
rudraraj · java中未声明最终变量 6 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 6 月前 |