2

如何删除 X++ 中容器的最后一个元素上读取的回车符?

当我为长度创建另一个变量时,字符串是 9,而不是 8,因为它包含 CRLF。

我试过使用strreplace([container element], '\n', '')since '\n'is the file inRecordDelimiter,但这似乎有效。

有任何想法吗?

4

2 回答 2

2

有回车符('\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)));
    }

}
于 2012-11-02T16:03:42.313 回答
0

看来您正在读取文件输入。为什么不首先避免冒犯性的角色?

如果使用AsciiIoTextIo您可以使用inRecordDelimiter来接受文件的正确行尾分隔符。

另请参阅相反的问题:如何读取作为二进制传输的文本文件

于 2012-11-04T14:30:21.597 回答