Dois conjuntos de dados de string precisam comparar os mesmos dados e adicionar seus valores para formar uma nova string de dados a1=sp2=20;sp1=34;
a2=sp3=2;sp2=3;sp1=4;
Dois conjuntos de dados de string. Adicione os mesmos valores de dados na string para obter um novo conjunto de dados.
Ou seja, sp3=2;sp2=23;sp1=38
(PS Uma aplicação simples: a quantidade original do produto 2 é de 20 peças, a quantidade original do produto 1 é de 34 peças, 3 peças do produto 2 recém-adquiridas ou vendidas recentemente, 4 peças do produto 1, etc. são simuladas para calcular o volume de compras e volume de vendas e estoque, um pequeno sistema de compras, vendas e estoque pode usar este método)
Então, como comparar e mesclar dois conjuntos de dados de string com os mesmos dados?
Primeiro, conecte e combine os dois conjuntos de dados de string
a3 = a1 e a2
Então a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;
Segundo, adicione os mesmos dados em a3
A principal solução aqui é como encontrar os mesmos dados
Em primeiro lugar, como agora a3 é composto por sp2, sp1, sp3, sp2 e sp1, é necessário encontrar os mesmos sp2 e sp1 separadamente e depois somar os valores.
Dividir por função de divisão; obtenha cada dado e valor para o separador.
Ou seja, s_array = split(a3,;) através do loop for i = 0 até ubound(s_array) podemos obter dados e valores individuais.
O formato de cada item é semelhante a sp2 = 20 e Sp2 precisa ser extraído para compará-lo com os dados do mesmo grupo, portanto é necessária uma função independente para extração.
Função getSPNome(sp)
getSPNome = divisão(sp,=)(0)
Função final
Função getSPNum(sp)
getSPNum = divisão(sp,=)(1)
função final
Obtenha o nome dos dados antes de = e o valor dos dados depois de = respectivamente.
Em segundo lugar, cada dado é decomposto, ou seja, como encontrar o mesmo nome de dados.
Assumimos este processo, primeiro extraímos o primeiro elemento do array a3, comparamos com os dados antes de dividir o primeiro elemento e os adicionamos se forem iguais.
s_array = divisão(a3,;)
para i = 0 para ubound(s_array)
para j=i+1 para ubound(s_array)
se getSPName(s_array(i)) = getSPName(s_array(j)) então
Nums = Nums + Cint(getSPNum(s_array(j)))
terminar se
próximo
próximo
Obtivemos o valor final e podemos atribuir o valor a uma nova matriz dinâmica a qualquer momento para formar a matriz de dados combinada final.
redim Preservar resultado(p)
resultado(p) = getSPName(s_array(i)) & = & Nums
Agora mesmo
s_array = divisão(a3,;)
para i = 0 para ubound(s_array)
para j=i+1 para ubound(s_array)
se getSPName(s_array(i)) = getSPName(s_array(j)) então
Nums = Nums + Cint(getSPNum(s_array(j)))
terminar se
próximo
redim Preservar resultado(p)
resultado(p) = getSPName(s_array(i)) & = & Nums
p=p+1
próximo
Isso certamente encontrará uma situação como esta: quando um elemento subsequente no array a3 é sempre operado com o mesmo elemento comparado antes, então este elemento não pode ser incluído em for i = 0 to ubound(s_array ) dentro de result(p) = getSPName(s_array(i)) & = & Nums array dinâmico.
Como resolver o problema de não comparar mais elementos que já foram comparados
Devemos marcar os elementos que foram comparados. Por exemplo, no array a3 (a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;) após retirar sp2=20, a comparação. a operação será A sp2 = 3, neste momento, o número do elemento da matriz sp2 = 3 será marcado após a operação de comparação e este elemento não será contado na próxima comparação do loop.
s_array = divisão(a3,;)
para i = 0 para ubound(s_array)
para j=i+1 para ubound(s_array)
se getSPName(s_array(i)) = getSPName(s_array(j)) então
Nums = Nums + Cint(getSPNum(s_array(j)))
terminar se
redimensionar Preservar ID(q)
ID(q) = j
q = q + 1
próximo
redim Preservar resultado(p)
resultado(p) = getSPName(s_array(i)) & = & Nums
p=p+1
próximo
A definição de ID(q)=j é marcar o elemento atualmente idêntico e atribuí-lo ao array dinâmico id(q é definido como 0 por padrão, e q=q+1 é repetido novamente.
Então, com esta marca, podemos escolher seletivamente comparar e acumular.
definir função
funçãoIsInID(j)
dimx
IsInID = falso
para cada x em ID
se x = j então
IsInID = verdadeiro
função de saída
Terminar se
Próximo
função final
A principal função é
função mainhb(s)
s_array = divisão(s,;)
para i = 0 para ubound(s_array)
se não for IsInID(i) então
Números = getSPNum(s_array(i))
para j=i+1 para ubound(s_array)
se getSPName(s_array(i)) = getSPName(s_array(j)) então
Nums = Nums + Cint(getSPNum(s_array(j)))
redimensionar Preservar ID(q)
ID(q) = j
q = q + 1
terminar se
próximo
redim Preservar resultado(p)
resultado(p) = getSPName(s_array(i)) & = & Nums
p = p + 1
terminar se
próximo
para cada x no resultado
mainhb=mainhb&x&;
próximo
função final
A função geral é
<%
resultado escuro()
dimID()
dim p , q , Nums
p = 0
q = 0
Números = 0
redimensionar Preservar ID(q)
ID(q) =
s = sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;
s = esquerda(s,len(s)-1)
resposta.write mainhb(s)
função mainhb(s)
s_array = divisão(s,;)
para i = 0 para ubound(s_array)
se não for IsInID(i) então
Números = getSPNum(s_array(i))
para j=i+1 para ubound(s_array)
se getSPName(s_array(i)) = getSPName(s_array(j)) então
Nums = Nums + Cint(getSPNum(s_array(j)))
redimensionar Preservar ID(q)
ID(q) = j
q = q + 1
terminar se
próximo
redim Preservar resultado(p)
resultado(p) = getSPName(s_array(i)) & = & Nums
p = p + 1
terminar se
'Números = 0
próximo
para cada x no resultado
mainhb=mainhb&x&;
próximo
função final
Função getSPNome(sp)
getSPNome = divisão(sp,=)(0)
Função final
Função getSPNum(sp)
getSPNum = divisão(sp,=)(1)
função final
funçãoIsInID(j)
dimx
IsInID = falso
para cada x em ID
se x = j então
IsInID = verdadeiro
função de saída
Terminar se
Próximo
função final
%>