Новая строка строки, не отображаемая в дверях

#ibm-doors

#ibm-двери #ibm-doors

Вопрос:

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

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

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

 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
  }
}
  

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

введите описание изображения здесь

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

Ответ №1:

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

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

 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’. Имейте в виду — при этом будут игнорироваться любые конечные пробелы в конце строки.

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