Два набора строковых данных необходимо сравнить одни и те же данные и сложить их значения, чтобы сформировать новые строковые данные a1=sp2=20;sp1=34;
а2=сп3=2;сп2=3;сп1=4;
Два набора строковых данных. Добавьте в строку одинаковые значения данных, чтобы получить новый набор данных.
То есть sp3=2;sp2=23;sp1=38.
(PS Простое приложение: исходное количество продукта 2 составляет 20 штук, исходное количество продукта 1 — 34 штуки, для расчета вновь купленных или вновь проданных 3 штук продукта 2, 4 штук продукта 1 и т. д. моделируются объем закупок, объем продаж и запасы, небольшая система закупок, продаж и запасов может использовать этот метод)
Итак, как сравнить и объединить два набора строковых данных с одинаковыми данными?
Сначала соедините и объедините два набора строковых данных.
а3=а1&а2
Тогда a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;
Во-вторых, добавьте те же данные в a3
Основное решение здесь — как найти те же данные
Прежде всего, поскольку теперь a3 состоит из sp2, sp1, sp3, sp2 и sp1, необходимо найти одинаковые sp2 и sp1 отдельно, а затем сложить значения.
Разделить по функции разделения; получить каждый фрагмент данных и значение разделителя.
То есть, от s_array = Split(a3,;) до цикла for i = 0 и ubound(s_array) мы можем получить отдельные данные и значения.
Формат каждого элемента аналогичен sp2=20. Sp2 необходимо извлечь для сравнения с данными в той же группе, поэтому для извлечения необходима независимая функция.
Функция getSPName(sp)
getSPName = разделение(sp,=)(0)
Конечная функция
Функция getSPNum(sp)
getSPNum = разделение(sp,=)(1)
конечная функция
Получите имя данных до = и значение данных после = соответственно.
Во-вторых, каждый фрагмент данных разлагается, то есть как найти одно и то же имя данных.
Мы предполагаем этот процесс: сначала извлекаем первый элемент в массиве a3, сравниваем его с данными перед разделением первого элемента и добавляем их, если они одинаковы.
s_array = разделение (a3,;)
для i = 0 до ubound(s_array)
для j=i+1 для ubound(s_array)
если getSPName(s_array(i)) = getSPName(s_array(j)) тогда
Nums = Nums + Cint(getSPNum(s_array(j)))
конец, если
следующий
следующий
Мы получили окончательное значение и можем в любой момент присвоить его новому динамическому массиву, чтобы сформировать окончательный объединенный массив данных.
redim Сохранить результат (p)
результат (p) = getSPName (s_array (i)) & = & Nums
Прямо сейчас
s_array = разделение (a3,;)
для i = 0 до ubound(s_array)
для j=i+1 для ubound(s_array)
если getSPName(s_array(i)) = getSPName(s_array(j)) тогда
Nums = Nums + Cint(getSPNum(s_array(j)))
конец, если
следующий
redim Сохранить результат (p)
результат (p) = getSPName (s_array (i)) & = & Nums
р=р+1
следующий
Это неизбежно приведет к такой ситуации: когда последующий элемент в массиве a3 всегда обрабатывается тем же элементом, что и предыдущий, поэтому этот элемент не может быть включен для i = 0 в ubound(s_array) в result(p) = getSPName(s_array(i)) & = & Динамический массив Nums.
Как решить проблему невозможности сравнения уже сравнивавшихся элементов
Надо отметить элементы, которые сравнивались. Например, в массиве a3 (a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;) после выноса sp2=20 сравнение. операция будет A sp2=3, в это время номер элемента массива sp2=3 будет отмечен после операции сравнения, и этот элемент не будет учитываться в следующем цикле сравнения.
s_array = разделение (a3,;)
для i = 0 до ubound(s_array)
для j=i+1 для ubound(s_array)
если getSPName(s_array(i)) = getSPName(s_array(j)) тогда
Nums = Nums + Cint(getSPNum(s_array(j)))
конец, если
восстановить идентификатор сохранения (q)
ID(q) = j
д = д + 1
следующий
redim Сохранить результат (p)
результат (p) = getSPName(s_array(i)) & = & Nums
р=р+1
следующий
Определение ID(q)=j заключается в том, чтобы пометить идентичный в данный момент элемент и присвоить его динамическому массиву. id(q) по умолчанию определяется как 0, а q=q+1 снова зацикливается.
Затем с помощью этой отметки мы можем выборочно выбирать для сравнения и накопления.
определить функцию
функцияIsInID(j)
димкс
ИсИнИД = ложь
для каждого x в идентификаторе
если x = j, то
ИсИнИД = правда
функция выхода
Конец, если
Следующий
конечная функция
Основная функция – это
функция mainhb(s)
s_array = разделение(s,;)
для i = 0 до ubound(s_array)
если не IsInID(i), то
Nums = getSPNum(s_array(i))
для j=i+1 для ubound(s_array)
если getSPName(s_array(i)) = getSPName(s_array(j)) тогда
Nums = Nums + Cint(getSPNum(s_array(j)))
восстановить идентификатор сохранения (q)
ID(q) = j
д = д + 1
конец, если
следующий
redim Сохранить результат (p)
результат (p) = getSPName (s_array (i)) & = & Nums
р = р + 1
конец, если
следующий
для каждого x в результате
mainhb=mainhb&x&;
следующий
конечная функция
Общая функция
<%
тусклый результат()
димИД()
dim p , q , числа
р=0
д= 0
Числа = 0
восстановить идентификатор сохранения (q)
ИД(д) =
s = sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;
s = влево(s,len(s)-1)
response.write mainhb(s)
функция mainhb(s)
s_array = разделение(s,;)
для i = 0 до ubound(s_array)
если не IsInID(i), то
Nums = getSPNum(s_array(i))
для j=i+1 для ubound(s_array)
если getSPName(s_array(i)) = getSPName(s_array(j)) тогда
Nums = Nums + Cint(getSPNum(s_array(j)))
восстановить идентификатор сохранения (q)
ID(q) = j
д = д + 1
конец, если
следующий
redim Сохранить результат (p)
результат (p) = getSPName (s_array (i)) & = & Nums
р = р + 1
конец, если
'Числа = 0
следующий
для каждого x в результате
mainhb=mainhb&x&;
следующий
конечная функция
Функция getSPName(sp)
getSPName = разделение(sp,=)(0)
Конечная функция
Функция getSPNum(sp)
getSPNum = разделение(sp,=)(1)
конечная функция
функцияIsInID(j)
димкс
ИсИнИД = ложь
для каждого x в идентификаторе
если x = j, то
ИсИнИД = правда
функция выхода
Конец, если
Следующий
конечная функция
%>