识别文件中的字符串,使其以引号开头和结尾

时间:2011-09-26 10:03:52

标签: java string file

我正在用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);

}

2 个答案:

答案 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类如何在正则表达式中处理(。)