Con2Str:
Con2Str извлечет список значений из контейнера и по умолчанию использует comma (,)
для разделения значений.
client server public static str Con2Str(container c, [str sep])
Если значение параметра sep
не указано, знак запятой будет вставлен между элементами в возвращаемой строке.
Возможные варианты:
Если вы хотите, чтобы пробел был разделителем по умолчанию, вы можете передать пробел в качестве второго параметра методу Con2Str
.
Еще одним вариантом является то, что вы также можете перебирать контейнер fileRecord
для извлечения отдельных элементов.
Фрагмент кода 1:
Ниже фрагмент кода загружает содержимое файла в текстовый буфер и заменяет возврат каретки (\r
) новой строкой (\n
). Условие if (strlen(line) > 1)
поможет пропустить пустые строки из-за возможного появления последовательных символов новой строки.
TextBuffer textBuffer;
str textString;
str clearText;
int newLinePos;
str line;
str field1;
str field2;
str field3;
counter row;
;
textBuffer = new TextBuffer();
textBuffer.fromFile(@"C:\temp\Input.txt");
textString = textBuffer.getText();
clearText = strreplace(textString, '\r', '\n');
row = 0;
while (strlen(clearText) > 0 )
{
row++;
newLinePos = strfind(clearText, '\n', 1, strlen(clearText));
line = (newLinePos == 0 ? clearText : substr(clearText, 1, newLinePos));
if (strlen(line) > 1)
{
field1 = substr(line, 1, 14);
field2 = substr(line, 15, 12);
field3 = substr(line, 27, 10);
info('Row ' + int2str(row) + ', Column 1: ' + field1);
info('Row ' + int2str(row) + ', Column 2: ' + field2);
info('Row ' + int2str(row) + ', Column 3: ' + field3);
}
clearText = (newLinePos == 0 ? '' : substr(clearText, newLinePos + 1, strlen(clearText) - newLinePos));
}
Фрагмент кода 2:
Вы можете использовать File macro вместо жесткого кодирования значений \r\n
и R
, которые обозначают режим чтения.
TextIo inputFile;
container fileRecord;
str line;
str field1;
str field2;
str field3;
counter row;
;
inputFile = new TextIo(@"c:\temp\Input.txt", 'R');
inputFile.inFieldDelimiter("\r\n");
row = 0;
while (inputFile.status() == IO_Status::Ok)
{
row++;
fileRecord = inputFile.read();
line = con2str(fileRecord);
if (line != '')
{
field1 = substr(line, 1, 14);
field2 = substr(line, 15, 12);
field3 = substr(line, 27, 10);
info('Row ' + int2str(row) + ', Column 1: ' + field1);
info('Row ' + int2str(row) + ', Column 2: ' + field2);
info('Row ' + int2str(row) + ', Column 3: ' + field3);
}
}