如何让PrintStream识别字符串中的回车符(unicode)?

时间:2014-05-18 05:33:50

标签: string unicode ms-word carriage-return printstream

我基本上尝试使用PrintStream将单个字符串写入包含换行符的文件,在这种情况下,我认为它将是一个回车符(CR)' \ u000D'。至于这些换行的发生位置是未知的,所以我必须格式化String本身来进行换行而不是让PrintStream这样做。

这是我在字符串中添加回车符的地方(行):

if(useNLTranslator && !isNumber(section))
    line = nlt.translate(line) + System.getProperty("line.separator");

这是我使用PrintStream将字符串打印到文本文件的地方:

try
{
    File file = new File(answer);
    PrintStream print = new PrintStream(file);

    print.println(result);
}
//result is the same as the line string above once its all put together

我还检查字符串以查找有回车符的位置并将其替换为其他内容,我之所以不会这样做是因为这将是一个很长的解释。我使用以下命令在字符串中找到回车符:

String cr = System.getProperty("line.separator");

我遇到的问题是在搜索文本时没有识别回车。此文本直接来自Microsoft Word文档,这可能是问题的一部分。这是我在没有识别回车的情况下抓到的东西:

//@@DEBUG -- KEEP THIS
String charValue = Character.toString(text.charAt(index));

try{
    current[i] = alphaBits[Character.getNumericValue(text.charAt(index)) - 10][i];
}catch(ArrayIndexOutOfBoundsException e){

    //@@DEBUG -- KEEP THIS
    System.out.println("Unrecognized character: " + charValue);
    Character whatIsThis = charValue.charAt(0);
    String name = Character.getName(whatIsThis.charValue());
    System.out.println("Unrecognized character name: " + name);
    System.out.print("You may want to consider adding this character");
    System.out.println(" to the list of recognized characters");

    return "Unrecognized character found.";
}

1 个答案:

答案 0 :(得分:0)

所以我实际上只是想出了我遇到的问题。而且我想任何人都很难弄清楚这一点,因为我没有解释translate()方法的作用。糟糕。

if(useNLTranslator && !isNumber(section))
    line = nlt.translate(line) + nlt.translate(System.getProperty("line.separator"));

在我没有翻译回车/行分隔符之前,所以它没有识别它,因为它的格式错误。谢谢你帮我解决了这个问题!