Java 在文件中标识以引号开头和结尾的字符串
我正在用Java编写一个scheme解释器。 文件包含许多行/字 这是文件中的一行: “xx'x v\'YYYY\\”…eee dddd ffff\\\n” 我必须识别它,以便返回整个字符串, 但在我的程序中,它只读“xx'x v” 然后读“to”中的其他单词 非常感谢您的帮助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)){
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
,这就是我理解您想要的。如果没有,那么说明你想要更好的。