我正在用Java编写一个方案解释器。 文件包含许多行/单词 这是文件中的一行:
“xx'x v \”yyyyy \“... eee dddd ffff \\\ n”
我必须识别它,以便返回整个字符串, 但在我的程序中,它只读“xx'x v” 然后从“到”中读取其他单词 任何帮助都非常感谢
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);
}
答案 0 :(得分:1)
如果您不想使用正则表达式,可以使用:
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);
}
答案 1 :(得分:0)
使用正则表达式,例如:
[^\\]\"(.*[^\\])\"
这只有在第一个“不是字符串的第一个字符时才有效。你想要的字符串是()之间的字符串。例如,如果我传递\”垃圾“Hello \”foo“,它将会得到Hello \“foo(如果我理解的话,这就是你想要的)。
我实际上不知道正则表达式的Java类如何在正则表达式中处理(。)