我正在从文本文件中读取 pl/sql 代码,并将其所有单词存储到下面代码的数组列表中:
Scanner in1 = new Scanner(file1);
ArrayList<String> Code1 = new ArrayList<String>();
in1.useDelimiter("(\\p{javaWhitespace}|\\.|,)+");
while (in1.hasNext())
{
Code1.add(in1.next().toLowerCase());
}
一切工作正常,但只要在特殊字符/* 和 */之间编写代码中的注释部分,我就会遇到问题。如下所示:
/*
|| This is a comments section in pl/sql code...||
|| Which i don't want to store.. ||
*/
我如何修改我的代码,以便它不会存储/* 和 */之间的任何内容
最佳答案
只需添加一个替代分隔符 - 多行注释。
in1.useDelimiter("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|[\\p{javaWhitespace}.,]+");
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
请参阅IDEONE demo :
String s = "Some text. More, more text. /* \n|| This is a comments section in pl/sql code...||\n|| Which i don't want to store.. ||\n*/ SOME HERE";
Scanner in1 = new Scanner(s);
ArrayList<String> Code1 = new ArrayList<String>();
in1.useDelimiter("/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|[\\p{javaWhitespace}.,]+");
while (in1.hasNext()) {
System.out.println(in1.next().toLowerCase());
}
结果:
some
text
more
more
text
关于java - 如何防止在java中的数组列表中存储特殊字符/*和*/之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934721/