Строка Newline не отображается в Doors - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть CSV-файл, содержащий некоторые данные, такие как:

374,Test Comment multiplelines \n Here's the 2nd line,Other_Data

Где 374 - идентификатор объекта от дверей, затем некоторые комментарии, а затем некоторые другие данные. У меня есть кусок кода, который читает данные из файла CSV, сохраняет их в соответствующих переменных и затем записывает их в объект дверей.

Module Openend_module = edit("path_to_mod", true,true,true)
Object o ;
Column c;
string attrib;
string oneLine ;
string OBJECT_ID = "";
string Comment = "";
String Other_data = "";

int offset;

string split_text(string s)
{
        if (findPlainText(s, sub, offset, len, false)) 
        {
            return s[0 : offset -1]   
        } 
        else 
        {
            return ""
        }
}

Stream input = read("Path_to_Input.txt");
input >> oneLine
OBJECT_ID = split_text(oneLine)
oneLine = oneLine[offset+1:]
Comment = split_text(oneLine)
Other_data = oneLine[offset+1:]

При использовании print Comment вывод в консоли DXL: Test Comment multiplelines \n Here's the 2nd line

for o in Opened_Module do 
{
if (o."Absolute Number"""==OBJECT_ID ){
   attrib = "Result_Comment " 2
   o.attrib = Comment
  }
}

Но после записи объекта дверей \n не учитывается, и результат выглядит следующим образом:

enter image description here

Я пытался поместить строку в буфер и использовать stringOf(), но escape-символ просто исчез. Я также попытался добавить \r\n и \\n к входному тексту CSV, но все равно не повезло

1 Ответ

1 голос
/ 04 апреля 2019

Это не самый эффективный способ справиться с этим, но у меня есть относительно простое исправление.

Я бы предложил добавить следующее:

Module Openend_module = edit("path_to_mod", true,true,true)
Object o ;
Column c;
string attrib;
string oneLine ;
string OBJECT_ID = "";
string Comment = "";
String Other_data = "";

int offset;

string split_text(string s)
{
        if (findPlainText(s, sub, offset, len, false)) 
        {
            return s[0 : offset -1]   
        } 
        else 
        {
            return ""
        }
}

Stream input = read("Path_to_Input.txt");
input >> oneLine
OBJECT_ID = split_text(oneLine)
oneLine = oneLine[offset+1:]
Comment = split_text(oneLine)
Other_data = oneLine[offset+1:]

//Modification to comment string
int x
int y
while ( findPlainText ( Comment , "\\n" , x , y , false ) ) {
     Comment = ( Comment [ 0 : x - 1 ] ) "\n" ( Comment [ x + 2 : ] )
}

Это запустит комментарийстрока через синтаксический анализатор, заменяя строку "\ n" на символ '\ n'.Имейте в виду - это будет игнорировать любые пробелы в конце строки.

Дайте мне знать, если это поможет.

...