BjurisMedlem sedan juli 2001514 inlägg Antagligen är inte detta rätt forum, men förlåt mig i så fall ;)
Jag håller på och försöker skapa ett pattern för en fraktsedel dvs:
123-12345675
tre siffror först som ett prefix.
Det jag har problem med är de åtta andra siffrorna, det är nämligen så att dem består först av 7 valfria siffror och sedan en kontrollsiffra.
För att det skall vara ett giltigt fraktsedelsnummer så kontrolleras den åttonde siffran med modulus 7.
ex:
1234567
Modulus på 12345675 blir 5
således blir fraktsedelsnummret 12345675 + prefix i början.
Hur skall jag lösa detta i regExp?
Peter SMedlem sedan dec. 20025 483 inlägg Typ så här:
dim m as match = regex.match(str, "\d{3}\-(\d{7})(\d)")
if m.success then
dim n as integer = convert.toint32(m.groups(1).tostring())
dim c as integer = convert.toint32(m.groups(2).tostring())
if n % 7 = c then
' Allt verkar stämma!
else
' Kontrollsiffran stämmer ej
end if
else
' Felaktigt data inmatat
end if
BjurisMedlem sedan juli 2001514 inlägg Problemet är att det inte alltid är en 5:a i slutet, utan den använder sig av modulus på de sju första siffrorna, så det kommer att variera från 1-7 (tror jag)
emissionMedlem sedan dec. 19996 721 inlägg Menar du att det ska vara
if n % 7 = c then
BjurisMedlem sedan juli 2001514 inlägg Nu är jag lite bortkollrad.
% = modulus ??
Jag skrev förövrigt fel på den översta modulus förklaringen
mod(1234567) = 5
ej: mod(12345675) = 5 --> det blir något helt annat
Peter SMedlem sedan dec. 20025 483 inlägg Då borde emissions rättelse av mig fungera. Om inte får du förklara vad som skall stå till höger om modulusoperatorn. Är det den sjunda siffran t.ex?
emissionMedlem sedan dec. 19996 721 inlägg
Bjuris skrev:
Nu är jag lite bortkollrad.
% = modulus ?
Nej, det är alldeles riktigt. Skulle bara kolla att du var vaken.... :)
Modulus skrivs ju "Mod" i VB.....