使用扫描仪时如何跳过一个字符
How to skip a character when using Scanner
我想从如下所示的文本文件中读取单词:
"A","ABILITY","ABLE","ABOUT","ABOVE","ABSENCE","ABSOLUTELY","ACADEMIC","ACCEPT","ACCESS","ACCIDENT","ACCOMPANY", ...
我使用 split("\",\"")
阅读单词,所以我将它们放在一个矩阵中。不幸的是,我不能跳过第一个引号,它开始我的 .txt 文件,因此在我的控制台中我有:
"A
ABILITY
ABLE
ABOUT
ABOVE
你知道我怎样才能跳过第一个引号吗?我都在尝试
Scanner in = new Scanner(file).useDelimiter("\"");
和parts[0].replace("\"", "");
,但它不起作用。
package list_1;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class exercise {
public static void main(String[] args) throws FileNotFoundException{
File file = new File("slowa.txt");
Scanner in = new Scanner(file).useDelimiter("\""); //delimiter doesn't work!
String sentence = in.nextLine();
String[] parts = sentence.split("\",\"");
parts[0].replace("\"", ""); //it doesn't work!
for (int i=0; i<10 ; i++){
System.out.println(parts[i]);
}
}
}
字符串是不可变的,这意味着您无法更改它们的状态。因此 replace
不会更改调用它的字符串,而是创建一个包含替换数据的新字符串,您需要将其存储在某个地方(可能在存储原始字符串的引用中)。所以而不是
parts[0].replace("\"", "");
你需要使用
parts[0] = parts[0].replace("\"", "");
无论如何设置分隔符并使用 nextLine
没有多大意义,因为此方法正在寻找行分隔符(如 \n
\r
\r\n
),而不是你的分隔符。如果你想让扫描仪使用定界符,请使用它的 next()
方法。
您还可以使用不同的分隔符来表示 "
或 ","
。您可以使用以下正则表达式 "(,")?
创建一个。
所以你的代码看起来像
Scanner in = new Scanner(file).useDelimiter("\"(,\")?");
while(in.hasNext()){
System.out.println(in.next());
}
您可以使用这个正则表达式。它对我有用:
Scanner in = new Scanner(file).useDelimiter("\"(,\")?");
while(in.hasNext()){
System.out.println(in.next());
}
我想从如下所示的文本文件中读取单词:
"A","ABILITY","ABLE","ABOUT","ABOVE","ABSENCE","ABSOLUTELY","ACADEMIC","ACCEPT","ACCESS","ACCIDENT","ACCOMPANY", ...
我使用 split("\",\"")
阅读单词,所以我将它们放在一个矩阵中。不幸的是,我不能跳过第一个引号,它开始我的 .txt 文件,因此在我的控制台中我有:
"A
ABILITY
ABLE
ABOUT
ABOVE
你知道我怎样才能跳过第一个引号吗?我都在尝试
Scanner in = new Scanner(file).useDelimiter("\"");
和parts[0].replace("\"", "");
,但它不起作用。
package list_1;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class exercise {
public static void main(String[] args) throws FileNotFoundException{
File file = new File("slowa.txt");
Scanner in = new Scanner(file).useDelimiter("\""); //delimiter doesn't work!
String sentence = in.nextLine();
String[] parts = sentence.split("\",\"");
parts[0].replace("\"", ""); //it doesn't work!
for (int i=0; i<10 ; i++){
System.out.println(parts[i]);
}
}
}
字符串是不可变的,这意味着您无法更改它们的状态。因此 replace
不会更改调用它的字符串,而是创建一个包含替换数据的新字符串,您需要将其存储在某个地方(可能在存储原始字符串的引用中)。所以而不是
parts[0].replace("\"", "");
你需要使用
parts[0] = parts[0].replace("\"", "");
无论如何设置分隔符并使用 nextLine
没有多大意义,因为此方法正在寻找行分隔符(如 \n
\r
\r\n
),而不是你的分隔符。如果你想让扫描仪使用定界符,请使用它的 next()
方法。
您还可以使用不同的分隔符来表示 "
或 ","
。您可以使用以下正则表达式 "(,")?
创建一个。
所以你的代码看起来像
Scanner in = new Scanner(file).useDelimiter("\"(,\")?");
while(in.hasNext()){
System.out.println(in.next());
}
您可以使用这个正则表达式。它对我有用:
Scanner in = new Scanner(file).useDelimiter("\"(,\")?");
while(in.hasNext()){
System.out.println(in.next());
}