Как заставить 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, чтобы найти, где есть символ возврата каретки, и заменяю его чем-то другим, причину этого я не буду вдаваться в подробности, так как это будет очень длинное объяснение. Я использую следующее, чтобы найти возврат каретки в String:

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.";
}

person user3499639    schedule 18.05.2014    source источник
comment
(1) Как вы получаете текст из Microsoft Word? (2) вы ищете разрывы строк или жесткие знаки возврата / абзаца? Word не размечает разрывы строк, возникающие из-за переноса слов внутри, поэтому в этом случае не было бы обнаруживаемых кодов символов в .doc или .docx (я думаю).   -  person    schedule 18.05.2014
comment
1) Думаю, мне следовало сказать, что я на самом деле беру то, что находится в файле Microsoft Word, и конвертирую его в текстовый файл (.txt). 2) Я надеялся поймать жесткие отдачи и мягкие отдачи, хотя о мягких возвратах для этого не думал. Есть ли способ получить мягкую прибыль?   -  person user3499639    schedule 18.05.2014


Ответы (1)


Так что я на самом деле только что понял, в чем проблема. И я полагаю, что кому-то было бы трудно в этом разобраться, поскольку я не объяснил, что делает метод translate (). Ой.

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

Раньше я не переводил символ возврата каретки / разделителя строк, поэтому он не распознавал его, поскольку он был в неправильном формате. Спасибо, что помогли мне с этой проблемой!

person user3499639    schedule 18.05.2014