使用分隔符不删除特殊字符

该文本文件包含以下数据。 我希望从文本文件的每一行中删除'$'。 我也希望将变量中的名称,饮料和成本存储起来以供将来操作。 但是,这可以稍后执行。 我不明白我的代码有什么问题,下面是文本文件数据:

问题使用正则表达式转义模式解决。 我必须用“ 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();
  }

使用Stringsplit方法。 您无法使用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

上一篇: Using Delimiter not removing special character

下一篇: Java Scanner backslash delimiter