如何删除 X++ 中容器的最后一个元素上读取的回车符?
当我为长度创建另一个变量时,字符串是 9,而不是 8,因为它包含 CRLF。
我试过使用strreplace([container element], '\n', '')
since '\n'
is the file inRecordDelimiter
,但这似乎有效。
有任何想法吗?
如何删除 X++ 中容器的最后一个元素上读取的回车符?
当我为长度创建另一个变量时,字符串是 9,而不是 8,因为它包含 CRLF。
我试过使用strreplace([container element], '\n', '')
since '\n'
is the file inRecordDelimiter
,但这似乎有效。
有任何想法吗?
有回车符('\r')和换行符('\n')。有时使用一种或两种。使用strReplace(...)
,它将用另一个字符模式替换一个字符模式。所以最好分别替换每个 '\n' 和 '\r' 因为 '\r\n' 与 '\n\r' 不同。
strReplace("?!?!?", "?!?", "*")
//returns the text string "*!?".
下面的这项工作有 2 行实际完成工作,其他循环只是向您显示字符串的 ascii 字符值。您应该这样做以分析您的字符串并查看剩余的内容。
static void Job69(Args _args)
{
container con = ['string1', 'str2', 'John Smith' + '\r\n' + '123 south st' + '\r\n' + 'Chicago, IL 60652'];
int i;
;
for (i=1; i<=strlen(conpeek(con, conlen(con))); i++)
{
// This just lets you see ascii codes
info(strfmt("%1 - %2", char2num(conpeek(con, conlen(con)), i), substr(conpeek(con, conlen(con)), i, 1)));
}
// This code does the work
con = conpoke(con, conlen(con), strReplace(conpeek(con, conlen(con)), '\r', ''));
con = conpoke(con, conlen(con), strReplace(conpeek(con, conlen(con)), '\n', ''));
for (i=1; i<=strlen(conpeek(con, conlen(con))); i++)
{
// This just lets you see ascii codes
info(strfmt("%1 - %2", char2num(conpeek(con, conlen(con)), i), substr(conpeek(con, conlen(con)), i, 1)));
}
}
看来您正在读取文件输入。为什么不首先避免冒犯性的角色?
如果使用AsciiIo
或TextIo
您可以使用inRecordDelimiter来接受文件的正确行尾分隔符。
另请参阅相反的问题:如何读取作为二进制传输的文本文件