【发布时间】:2013-01-14 17:27:01
【问题描述】:
我在java中编写了以下代码来打开另一个.java文件并创建令牌(使用扫描器类)
import java.io.FileReader;
import java.util.Scanner;
public class scanner1 {
public static void main(String[] arg) throws Exception
{
FileReader fin = new FileReader("mysourcefile.java");
Scanner scan=new Scanner(fin);
scan.useDelimiter(" "); // the delimiter pattern required
while(scan.hasNext()) {
System.out.println(scan.next());
}
}
}
我的任务是创建完整的Java 文件的标记,并且分隔符也应该被视为标记。
那么在scan.useDelimiter("") 中使用的分隔符模式应该是什么?
更新:
上面的任务是使用 stringtokenizer 完成的。但我不知道为.java 文件创建标记的定界符的确切模式。我可以回答在给定情况下使用什么分隔符模式吗?
import java.util.*;
public class sstring2
{
public static void main(String[] args)
{
String s = "a=(b+c); String st='hello! my dear';";
StringTokenizer st = new StringTokenizer(s, "[ =+';().*{}[],!@#$%^&/]", true);
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
}
}
}
这段代码给出了正确的结果。
【问题讨论】:
-
注意:您可以链接:
new Scanner(fin).useDelimiter("whatever")。.useDelimiter()返回this。 -
嗯,这是您应该阅读的内容:docs.oracle.com/javase/specs。假设您正在尝试构建一个严肃的 Java 源代码解析器。
-
扫描仪旨在忽略分隔符。 StringTokenizer 可能是更好的选择。
-
@PeterLawrey 是的,我也使用了 stringtokenizer。它正确地给出了分隔符。但分隔符字符串问题与我面临的相同。我也可以编辑并发布该 java 代码
-
"我的任务是创建完整的 java 文件的标记,并且分隔符也应该被视为标记。" - 我仍然没有得到这个问题。正如在 java 文件中可以有任何字面意思。那么,您是否首先验证它是否是正确的 java 文件?在标记化之后你要做什么?您是否正在尝试构建自定义的自制编译器?
标签: java java.util.scanner stringtokenizer