0
我正在使用方法quoteChar('"')
来处理字符串。 当字符串被解析时,通常的转义序列(如“\ n”和“\ t”)被识别并转换为单个字符。 有没有什么办法让字符串只是它是的,这意味着如果我有字符串的方式:java StreamTokenizer
你好\ t世界
我想
你好\ t世界
,而不是:
Hello world
。 谢谢
我正在使用方法quoteChar('"')
来处理字符串。 当字符串被解析时,通常的转义序列(如“\ n”和“\ t”)被识别并转换为单个字符。 有没有什么办法让字符串只是它是的,这意味着如果我有字符串的方式:java StreamTokenizer
你好\ t世界
我想
你好\ t世界
,而不是:
Hello world
。 谢谢
看看StreamTokenizer
来源,它看起来像字符串的转义行为是硬编码。我只能想到几种方法来解决它:
Reader
和StreamTokenizer
之间插入您自己的Reader
。将所有为最后一个标记读取的字符存储在缓冲区中。修剪该缓冲区开始处的空白以获取“原始”标记。这什么工作对我来说:
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;
}
}
,然后创建由标记者:
myTokenizer = new StreamTokenizer(new MyReader(new FileReader(file)));
和
MyTokenizer.sval.replace(TAB_REPLACEMENT, '\t')
添加得到新strval“\\ñ “找到字符串”\ n“ – JustinDanielson 2012-01-15 22:03:23