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