Показать сообщение отдельно
Старый 07.04.2016, 09:57   #1  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Post strReplace для нескольких значений
Друзья, прошу посмотреть код и дать совет.

Появилась необходимость в строке заменить несколько символов.
Например: ОАО "Какая-то компания и сим'вол" , нужно ' и " заменить на `.

Первое, что приходит на ум это strReplace(strReplace()), но что делать если символов много? (больше одно уже много)

Я написал следующий метод в Global:
X++:
static str strReplaceContainer(str _str, container _fromStrCon, container _toStrCon)
{
    int     i;
    str     fromStr,
            toStr;
    ;
    if(conLen(_fromStrCon) != 0 && conLen(_toStrCon) != 0)
    {
        for(i = 1; i <= conLen(_fromStrCon); i++)
        {
            fromStr = conPeek(_fromStrCon, i);
            toStr   = conPeek(_toStrCon, i < conLen(_toStrCon) ? i : conLen(_toStrCon));

            _str = strReplace(_str, fromStr, toStr);
        }
    }

    return _str;
}
Благодаря этому методу можно заменить вот такой код
X++:
    strReplace(strReplace(strReplace(custTable.Name, '\"', '`'),'\'', '`'), '&', '_');
на
X++:
    strReplaceContainer(custTable.Name, ['\"', '\'', '&'], ['`', '`', '_']);