AX中的StrReplace功能

时间:2012-11-02 14:23:30

标签: axapta

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

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

我尝试使用strreplace([container element], '\n', ''),因为'\n'是文件inRecordDelimiter,但这似乎有效。

有什么想法吗?

2 个答案:

答案 0 :(得分: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)));
    }

}

答案 1 :(得分:0)

好像你正在阅读文件输入。为什么不首先避免犯罪角色?

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

另请参阅反向问题:How to read text files transfered as binary