Permalänk
Medlem

C# noob behöver hjälp!

Jag håller på med en uppgift där jag vill kalkylera det som som man skriver in i en textbox och räknar ut det på en button då alltså...

tex : i textboxen skriver jag " 910523552 " och vill alltså ta alla dessa siffror för att kunna räkna ut det i min "Calculate" knapp..

Som sagt är noob.. va snälla ;D

Permalänk
Medlem

Vill räkna ut sista siffran i det personnummret alltså.

Permalänk
Medlem

Du skulle kunna loopa igenom stringen på följande sätt:
string fyraSista;

for(int i = 5; i < string.lenght; i++)
{
fyraSista += string[i];
}
int i måste vara platsen i stringen precis innan dem siffrorna du vill ha ut.

nu minns jag dock inte om en array börjar på element 1 eller 0 i c#

Visa signatur
Permalänk

Hur långt har du kommit?

Visa signatur

CPU: Intel core i5 3450 | GPU: Asus Radeon HD 7870 | PSU: Corsair GS 600W | Moderkort: MSI b75a-g43 | HDD WD blue 500 GB | RAM: Crucial ballistiX 2x4gb DDR3 1600MHz | Ljudkort: Asus Xonar DG |

Permalänk
Medlem

Tänker något i denna stilen?

string talIn = tbxInput.Text;
char sista = talIn[9];
tbxOutput.Text = sista.ToString();

För alla person nummer är väll på 10 siffror?
Eller?

Permalänk
Medlem
Skrivet av Ga22be:

Tänker något i denna stilen?

string talIn = tbxInput.Text;
char sista = talIn[9];
tbxOutput.Text = sista.ToString();

För alla person nummer är väll på 10 siffror?
Eller?

Ja ett svenskt är det och det ska jag ha:)

Permalänk
Medlem

Hade visst inte riktigt koll på mina uträkningar när det gäller personnumret!
My bad!

Permalänk
Medlem
Skrivet av Ga22be:

Tänker något i denna stilen?
För alla person nummer är väll på 10 siffror?
Eller?

Nej. 12 Eller 13 om man använder sig av - som också är rätt. Även 8 samt 9 är rätt på sätt och vis men kan ge fel på grund av årtalet.

Alla dessa är giltiga:
YYYYMMDDXXXX
YYYYMMDD-XXXX
YYMMDDXXXX
YYMMDD-XXXX

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 3070
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck + de fiesta konsoller.

Permalänk
Medlem

TextBox.Text.Substring(TextBox.Text.Length - 5)

Edit: Det bör returnera en sträng med de 4 sista siffrorna

Permalänk
Medlem

Om det ska vara mer avancerat och tåla flera olika format som ex MugiMugi föreslår så är det Regex som gäller.

Visa signatur

CPU : AMD Ryzen 5 5600X Moderkort : ASUS ROG Strix B550-F GAMING Grafikkort :EVGA GeForce GTX 1080 Ti FTW3 iCX Gaming HDMI 3xDP 11GBMinne : Corsair 16GB Chassi :Fractal Design Define 7 Compact Nätdel : Corsair RM750x Skärm #1 : Asus VG349Q Ultrawide Skärm #2 : Acer X34 Ultrawide

Permalänk
Medlem
Skrivet av SnowJim:

Om det ska vara mer avancerat och tåla flera olika format som ex MugiMugi föreslår så är det Regex som gäller.

Folk älskar verkligen regex
Själv tycker jag det är onödigt komplicerat för den här uppgiften (igen). Om regexet är krångligare än problemet är det inte värt det.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av EuQ:

Det du vill räkna ut är alltså kontroll siffran.
Det gör du genom att addera alla tal i ditt personnummer och sen tar du närmaste övre 10-tal och subtraherar det med summan av dina siffror och kommer då få en siffra mellan 0-9.

T.ex 900312-457 skulle bli 9 + 3 + 1 + 2 + 4 + 5 + 7 = 31
40 - 31 = 9
Så det blir alltså 900312-4579

[...]

Det här stämmer inte. Se här (sista stycket) hur kontrollsiffran räknas ut.