我正在使用方法quoteChar('"')
来处理字符串。
通常的转义序列(如“\ n”和“\ t”)会被识别,并在解析字符串时转换为单个字符。
有没有办法让字符串像它一样,这意味着如果我有字符串:
您好\ t世界
我想要
您好\ t世界
而不是:
Hello world
。 感谢
答案 0 :(得分:1)
查看StreamTokenizer
源代码,看起来字符串的转义行为是硬编码的。我只能想办法解决这个问题:
Reader
和Reader
之间插入您自己的StreamTokenizer
。将读取的所有字符存储在缓冲区中。从该缓冲区的起点修剪空格以获得“原始”标记。答案 1 :(得分:1)
这对我有用:
public class MyReader extends BufferedReader {
// You can choose whatever replacement you'd like(one wont occur in your text)
private static final char TAB_REPLACEMENT = '\u0000';
public MyReader(Reader in) {
super(in);
}
@Override
public int read() throws IOException {
int charVal = super.read();
if (charVal == '\t') {
return TAB_REPLACEMENT;
}
return charVal;
}
}
然后通过以下方式创建tokenizer:
myTokenizer = new StreamTokenizer(new MyReader(new FileReader(file)));
并通过
获取新的strvalMyTokenizer.sval.replace(TAB_REPLACEMENT, '\t')