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