Permalänk
Medlem

strängproblem i C#

Om jag har:

string test = "12:34:56";

och vill ha ut 12 ur test för att kunna stoppa in det i en annan sträng, hur gör jag då?

Visa signatur

Vem har bajsat i min termos?

Permalänk
Medlem

Använd dig av substring:

string ny = test.Substring(0, 2);

Permalänk
Medlem

Tack för det!

Visa signatur

Vem har bajsat i min termos?

Permalänk
Medlem

Om det är en tidsangivelse du håller på med så skulle jag nog ha använt:
string s = "12:34:56";
TimeSpan ts = TimeSpan.Parse(s);
ts.Hours skulle då vara en int och ha värdet 12.

Men det beror ju helt på vad du ska ha det till.

Permalänk
Medlem

Ja, för vad får ny för värde om man använder substring då tiden t.ex. är

1:34:25

Det är alltid farligt med antaganden om hur data ser ut. Med första lösningen antar man att det alltid kommer vara två siffror. Lösningen med timespan är bättre imho. Då för TimeSpan.Parse(s) sköta tolkningen av strängen.

Ett alternativ är att köra split.

String x = "12:34:56"; String[] y = x.Split(':'); String z = y.Length == 3 ? y[0] : "??";

Rad 1 är indata.
Rad 2 splittar strängen i delar, där varje del delas av förekomsten av :
Rad 3 kontrollerar att vi fick 3 delar (timmar, minuter och sekunder). Man skulle kunna göra annan koll, det var bara ett exempel.

I detta exempel kan z få värdet "??" om indatasträngen inte innehåller exakt 2 förekomster av :

Permalänk
Medlem

Annars kan du ju använda dig av IndexOf istället, dvs

string Temp = "12:43:56";
Temp = Temp.Remove(Temp.IndexOf(":"));

Visa signatur

mm, just de!