我正在读取一个文本文件,条件是要忽略以*开头的单词。
example:
abc 1234 *text to be ignored
所以在这个例子中,当从文本文件中读取时,我将忽略“要忽略的文本”,并且只在字符串数组中存储abc和1234。
为此,我写了下面的代码。如何实现忽略以*?
开头的单词的条件public static void read(String filename) {
BufferedReader reader = null;
try {
String line;
reader = new BufferedReader (new FileReader(filename));
while ((line = reader.readLine()) != null) {
String[] functionName = line.split("\\s+");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (reader != null)
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:3)
startWith(String literal)
返回true。
例如:
"1234".startsWith("12");
返回true
。
所以你应该阅读所有单词并检查它是否开始甚至包含*,如果是,则忽略整个单词。
示例:
if(! word.startsWith("*")) {
// add to what ever you want
}
或
if(! word.contains("*")) {
// add to what ever you want
}
答案 1 :(得分:1)
您可以尝试indexOf()
与substring()
一样
while ((line = reader.readLine()) != null) {
if(line.indexOf("*")>-1)
line=line.substring(0,line.indexOf("*"));
String[] functionName = line.split("\\s+");
}
以上indexOf("*")
会为您提供*
的索引,然后您可以找到带有endIndex
的子字符串作为*
的索引indexOf("*")
substring(beginIndex,endIndex)
1}}通过while ((line = reader.readLine()) != null) {
String[] functionName = line.split("\\s+");
String newLine = "";
for(String strg : functionName){
if(strg.startsWith("*")){
break;
}else{
newLine = strg + newLine;
}
}
}
答案 2 :(得分:1)
您可以在while循环中执行某些操作 -
new scene.addEventHandler(KeyEvent. KEY_PRESSED, ( key) -> {
答案 3 :(得分:1)
你不知道你正在使用什么版本的Java,所以我将假设Java 8 ......
注意:代码未经测试,但应该可以进行一些调整。
td
答案 4 :(得分:1)
如果您不想循环检查单词以检查它是否以*
开头,您还可以在使用split
之前删除所有带有星号的单词。
String str = "abc 1234 *text to be ignored";
System.out.println(Arrays.toString(str.replaceAll("\\*[^\\s]+\\s*", "").split("\\s+")));
// [abc, 1234, to, be, ignored]
str = "*abc *1234 *text to be *ignored";
System.out.println(Arrays.toString(str.replaceAll("\\*[^\\s]+\\s*", "").split("\\s+")));
// [to, be]
正则表达式分解
\\* - Literal match of asterisk
[^\\s]+ - Match anything but a space
\\s* - Capture any or no spaces at end of word