Hej! Kolla ifall strängen är null innan du försöker göra något med den, annars så kommer du ju att få ett felmeddelande när du försöker använda metoden LastIndexOf på null. Angående strängen så vet jag redan att den inte är tom. Det kollas med hjälp av chkEmail. Så här ska det stå: Så här blev slutresultatet: > Så här ska det stå:string till int?
Jag har en string som innehåller siffror ibland och när när den gör det hämtar jag ut siffrorna och spar dem i en sträng.
Det funkar fint.
Sedan vill jag kolla om den innehåller något eller är null.
Innehåller den inte null vill jag öka på värdet i strängen med 1, spara den i iIndex och sedan lägga till den i slutet på strängen eMail.
Men när jag kommer till raden som ska lägga på 1 blir det fel.
Jag får "System.FormatException: Input string was not in a correct format.".
Hur ska jag göra?
Nedan finns min kod.
<code>
while(chkEmail(eMail) == false)
{
k++;
subStr = eMail.Substring(eMail.LastIndexOf(".") + 1);
subStr = Regex.Replace(subStr, @"\D[^0-9]", "");
if (subStr != null)
{
iIndex = Convert.ToInt16(subStr) + k;
}
eMail = eMail + iIndex;
}
</code>Sv: string till int?
Ditt regular expression ser ut att vara ett missförstånd... Det är samma sak som "\D\D" eller "\D{2}", alltså två tecken i rad som inte är siffror. Ska det verkligen vara två tecken? Ska du inte plocka bort alla tecken som inte är siffror?
Efter att du har plockat bort siffrorna så bör du kolla ifall det finns några tecken kvar i strängen. Ifall du konverterar en tom sträng till ett tal så får du värdet noll, vilket kanske inte alls är vad du är ute efter.Sv:string till int?
Hur ska jag göra med regular expression för att bara få ut siffrorna? Som det var nu fick jag ju ut dem bara för att jag hade .se i test datan och jag testade inte med något annat. Osis. :o)Sv: string till int?
<code>subStr = Regex.Replace(subStr, @"[^\d\s]+", "");</code>Sv: string till int?
<code>
string subStr;
int k, iIndex;
k = 0;
iIndex = 0;
while (chkEmail(eMail) == false)
{
subStr = eMail.Substring(eMail.LastIndexOf(".") + 1);
subStr = Regex.Replace(subStr, @"[^\d\s]+", "");
if (subStr.Length > 0)
{
iIndex = Convert.ToInt16(subStr) + ++k;
}
else
{
iIndex++;
}
eMail = Regex.Replace(eMail, @"[\d\s]+", "") + iIndex.ToString();
}
return eMail;
</code>Sv:string till int?
> subStr = Regex.Replace(subStr, @"[^\d\s]+", "");
Hm... Läs frågan igen. Bara siffror var det.
subStr = Regex.Replace(subStr, @"\D", "");