Java 在文件中标识以引号开头和结尾的字符串

Java 在文件中标识以引号开头和结尾的字符串,java,string,file,Java,String,File,我正在用Java编写一个scheme解释器。 文件包含许多行/字 这是文件中的一行: “xx'x v\'YYYY\\”…eee dddd ffff\\\n” 我必须识别它,以便返回整个字符串, 但在我的程序中,它只读“xx'x v” 然后读“to”中的其他单词 非常感谢您的帮助 String text = ""; int nextString = t; while(!isString(nextString)){

我正在用Java编写一个scheme解释器。 文件包含许多行/字 这是文件中的一行:

“xx'x v\'YYYY\\”…eee dddd ffff\\\n”

我必须识别它,以便返回整个字符串, 但在我的程序中,它只读“xx'x v” 然后读“to”中的其他单词 非常感谢您的帮助

String text = "";
    int nextString = t;         

    while(!isString(nextString)){           

            nextString = reader.read();
            int next = peek();              

            if (nextString == '\\' && next =='"'){
                nextString = reader.read();                                                     

                if(Character.isSpaceChar(next)){
                    text+=" ";
                }                   
            }               
            text += (char) nextString;
    }       
    return new StringToken(text, lineNumber);

}

如果不想使用正则表达式,可以使用:

String text = "";
    int nextString = t;         

    while(!isString(nextString)){           

            nextString = reader.read();
            int next = peek();              

            if (nextString == '\\' && next =='"'){
                nextString = reader.read(); 
                text += (char) nextString;
               nextString = reader.read();            
            }     
           if(Character.isSpaceChar(next)){
                    text+=" ";
                }           
            text += (char) nextString;
    }       
    return new StringToken(text, lineNumber);
}

使用正则表达式,例如:

[^\\]\”(.[^\\])\”

只有当第一个“不是字符串的第一个字符时,这才有效。您想要的字符串是()之间的字符串。例如,如果我传递\“垃圾”Hello \“foo”,它将得到Hello \“foo(如果我理解正确,这就是您想要的)


实际上我不知道正则表达式的Java类在正则表达式中是如何处理()的。

为什么不使用正则表达式呢?我可以不用正则表达式就这样做吗?并且以某种方式逃避正则表达式通常更快更干净。打印/返回应该是xx'x“xxxxxx”。。。xx xxx xxxx\\n结尾有空格我不明白你的意思。如果你通过你所举的例子“xx'x v\'yyyy\”…eee dddd ffff\\\n“,你会得到
xx'x v\'yyyy\。。。eee dddd ffff\\n
,这就是我理解您想要的。如果没有,那么说明你想要更好的。