» Фильтр символов в строке: Разбивка значений

K.A.V.
www.oszone.net
22.02.2010
Автор: K.A.V.
Последнее обновление: 9.08.2012

Возникал следющий вопрос: Как получить все значения, когда в строке они разделяются каким-либо знаком?:
Значение 1|Значение 2|Значение 3|Значение 4|Значение 5
Значение 1;Значение 2;Значение 3;Значение 4;Значение 5
Значение 1-Значение 2-Значение 3-Значение 4-Значение 5
и т.д.

Привожу пример кода:
В начале кода:
!include "StrFunc.nsh"
${StrStrAdv}
${StrRep}

Предположу, что наша строка хранится в переменной $1 и нам необходимо получить значения, когда они разделяются знаком вертикальной линии |
strcpy $1 "C|Program Files|NSIS|test1|test2"

# Предварительно, необходимо добавить тот символ в конец строки, которым разделяются значения в строке, чтобы прочитать последнее значение
StrCpy $1 "$1|"

now:
${StrStrAdv} $0 "$1" "|" ">" "<" "0" "0" "1"
StrCmp $0 "" end 0

# Выполняем код, который нужен [ начало ]
MessageBox MB_OK|MB_ICONINFORMATION "$0$\n$1"
# Выполняем код, который нужен [ конец ]

# Продолжаем фильтр строки
${StrRep} $1 "$1" "$0|" ""
goto now
end: