Deux ensembles de données de chaîne doivent comparer les mêmes données et ajouter leurs valeurs pour former une nouvelle chaîne de données a1=sp2=20;sp1=34;
a2=sp3=2;sp2=3;sp1=4;
Deux ensembles de données de chaîne. Ajoutez les mêmes valeurs de données dans la chaîne pour obtenir un nouvel ensemble de données.
Autrement dit, sp3=2;sp2=23;sp1=38
(ps Une application simple : la quantité originale du produit 2 est de 20 pièces, la quantité originale du produit 1 est de 34 pièces, 3 pièces nouvellement achetées ou nouvellement vendues du produit 2, 4 pièces du produit 1, etc. sont simulées pour calculer le volume d'achat et volume de ventes et inventaire, un petit système d'achat, de vente et d'inventaire peut utiliser cette méthode)
Alors, comment comparer et fusionner deux ensembles de données de chaîne avec les mêmes données ?
Tout d'abord, connectez et combinez les deux ensembles de données de chaîne
a3=a1&a2
Alors a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;
Deuxièmement, ajoutez les mêmes données dans a3
La solution principale ici est de savoir comment trouver les mêmes données
Tout d’abord, parce que maintenant a3 est composé de sp2, sp1, sp3, sp2 et sp1, il est nécessaire de trouver les mêmes sp2 et sp1 séparément puis d’ajouter les valeurs.
Fonction Split by split ; obtenez chaque élément de données et valeur pour le délimiteur.
Autrement dit, s_array = split(a3,;) via la boucle for i = 0 to ubound(s_array) nous pouvons obtenir des données et des valeurs individuelles
Le format de chaque élément est similaire à sp2=20. Sp2 doit être extrait pour le comparer avec les données du même groupe, une fonction indépendante est donc nécessaire pour l'extraire.
Fonction getSPName(sp)
getSPName = split(sp,=)(0)
Fonction de fin
Fonction getSPNum(sp)
getSPNum = split(sp,=)(1)
fonction de fin
Obtenez respectivement le nom des données avant = et la valeur des données après =.
Deuxièmement, chaque élément de données est décomposé, c'est-à-dire comment trouver le même nom de données.
Nous supposons un tel processus, extrayons d'abord le premier élément du tableau a3, le comparons avec les données avant de diviser le premier élément et l'ajoutons s'ils sont identiques.
s_array = split(a3,;)
pour i = 0 à ubound(s_array)
pour j=i+1 vers ubound(s_array)
si getSPName(s_array(i)) = getSPName(s_array(j)) alors
Nombres = Nombres + Cint(getSPNum(s_array(j)))
finir si
suivant
suivant
Nous avons obtenu la valeur finale et pouvons attribuer la valeur à un nouveau tableau dynamique à tout moment pour former le tableau de données combiné final.
redim Préserver le résultat(p)
result(p) = getSPName(s_array(i)) & = & Nums
Tout de suite
s_array = split(a3,;)
pour i = 0 à ubound(s_array)
pour j=i+1 vers ubound(s_array)
si getSPName(s_array(i)) = getSPName(s_array(j)) alors
Nombres = Nombres + Cint(getSPNum(s_array(j)))
finir si
suivant
redim Préserver le résultat(p)
result(p) = getSPName(s_array(i)) & = & Nums
p=p+1
suivant
Ceci est inévitable pour rencontrer une situation comme celle-ci : lorsqu'un élément suivant du tableau a3 est toujours utilisé avec le même élément comparé auparavant, cet élément ne peut donc pas être inclus dans i = 0 à ubound(s_array ) dans result(p) = getSPName(s_array(i)) & = & Tableau dynamique Nums.
Comment résoudre le problème de ne plus comparer des éléments déjà comparés
Il faut marquer les éléments qui ont été comparés. Par exemple, dans le tableau a3 (a3=sp2=20;sp1=34;sp3=2;sp2=3;sp1=4;) après avoir retiré sp2=20, la comparaison L'opération se terminera A sp2=3, à ce moment, le numéro d'élément du tableau sp2=3 sera marqué après l'opération de comparaison, et cet élément ne sera pas compté dans la prochaine comparaison de boucle.
s_array = split(a3,;)
pour i = 0 à ubound(s_array)
pour j=i+1 vers ubound(s_array)
si getSPName(s_array(i)) = getSPName(s_array(j)) alors
Nombres = Nombres + Cint(getSPNum(s_array(j)))
finir si
redim Préserver l'ID (q)
ID(q) = j
q = q + 1
suivant
redim Préserver le résultat(p)
result(p) = getSPName(s_array(i)) & = & Nums
p=p+1
suivant
La définition de ID(q)=j est de marquer l'élément qui est actuellement le même et de l'attribuer au tableau dynamique id(q) est défini comme 0 par défaut, et q=q+1 est à nouveau bouclé.
Ensuite, avec cette marque, nous pouvons choisir sélectivement de comparer et d’accumuler.
définir la fonction
fonctionIsInID(j)
atténuer x
IsInID = faux
pour chaque x dans ID
si x = j alors
IsInID = vrai
fonction de sortie
Terminer si
Suivant
fonction de fin
La fonction principale est
fonction mainhb(s)
s_array = split(s,;)
pour i = 0 à ubound(s_array)
sinon IsInID(i) alors
Nombres = getSPNum(s_array(i))
pour j=i+1 vers ubound(s_array)
si getSPName(s_array(i)) = getSPName(s_array(j)) alors
Nombres = Nombres + Cint(getSPNum(s_array(j)))
redim Préserver l'ID (q)
ID(q) = j
q = q + 1
finir si
suivant
redim Préserver le résultat(p)
result(p) = getSPName(s_array(i)) & = & Nums
p = p + 1
finir si
suivant
pour chaque x dans le résultat
mainhb=mainhb&x&;
suivant
fonction de fin
La fonction globale est
<%
résultat faible()
dimID()
dim p , q , Nombres
p=0
q= 0
Nombres = 0
redim Préserver l'ID (q)
ID(q) =
s = sp4=33;sp2=20;sp1=34;sp3=2;sp2=3;sp4=4;
s = gauche(s,len(s)-1)
réponse.write mainhb(s)
fonction mainhb(s)
s_array = split(s,;)
pour i = 0 à ubound(s_array)
sinon IsInID(i) alors
Nombres = getSPNum(s_array(i))
pour j=i+1 vers ubound(s_array)
si getSPName(s_array(i)) = getSPName(s_array(j)) alors
Nombres = Nombres + Cint(getSPNum(s_array(j)))
redim Préserver l'ID (q)
ID(q) = j
q = q + 1
finir si
suivant
redim Préserver le résultat(p)
result(p) = getSPName(s_array(i)) & = & Nums
p = p + 1
finir si
'Nombres = 0
suivant
pour chaque x dans le résultat
mainhb=mainhb&x&;
suivant
fonction de fin
Fonction getSPName(sp)
getSPName = split(sp,=)(0)
Fonction de fin
Fonction getSPNum(sp)
getSPNum = split(sp,=)(1)
fonction de fin
fonctionIsInID(j)
atténuer x
IsInID = faux
pour chaque x dans ID
si x = j alors
IsInID = vrai
fonction de sortie
Terminer si
Suivant
fonction de fin
%>