使用分隔符不删除特殊字符
该文本文件包含以下数据。 我希望从文本文件的每一行中删除'$'。 我也希望将变量中的名称,饮料和成本存储起来以供将来操作。 但是,这可以稍后执行。 我不明白我的代码有什么问题,下面是文本文件数据:
问题使用正则表达式转义模式解决。 我必须用“ s * $ s *”替换“$”
Rubin$Vodka$55
Alex$Gin$22
Max$Water$FREE
码:
File filename = new File("animals2.txt");
try{
Scanner sc = new Scanner(filename);
String line = sc.nextLine();
Scanner linesc = new Scanner(line).useDelimiter("$");
while(linesc.hasNext()){
String name = linesc.next();
txaDisplay.append(name + "n");
}
}
catch(Exception e){
e.printStackTrace();
}
只需更改以下代码行:
Scanner linesc = new Scanner(line).useDelimiter("s*$s*");
您需要传递转义$符号的正则表达式模式。
你可以试试这个..
File filename = new File("animals2.txt");
try{
Scanner sc = new Scanner(filename);
while(sc.hasNext())
{
StringBuffer txaDisplay = new StringBuffer();
String line = sc.nextLine();
StringTokenizer linesc = new StringTokenizer(line,"/($)/g");
while(linesc.hasMoreElements()){
String name = linesc.nextToken();
txaDisplay.append(name+" ");
}
System.out.println(txaDisplay);
}
}
catch(Exception e){
e.printStackTrace();
}
使用String
的split
方法。 您无法使用Scanner完成您尝试的操作。
public static void main( String[] args)
{
File filename = new File( "animals2.txt");
try{
Scanner sc = new Scanner( filename);
while( sc.hasNextLine())
{
String line = sc.nextLine();
String[] arr = line.split( "$");
for( String str : arr)
{
txaDisplay.append( str + "n");
}
}
} catch( Exception e) {
e.printStackTrace();
}
}
作为附注,不要使用StringTokenizer。 以下是文档所说的内容:
StringTokenizer是一个遗留类,为了兼容性原因保留,尽管它在新代码中的使用不受欢迎。 建议任何寻求此功能的人使用String或java.util.regex包的拆分方法。
链接地址: http://www.djcxy.com/p/78347.html