hoe verwijder ik tekens in een tekenreeks/tekst van een tekstvak?

Ik heb een textbox-besturingselement asp.net 4 waarvan de tekst dynamisch wordt bevolkt door een java-script. Een Google Maps-oproep om precies te zijn. Het geeft me kilometers van het ene naar het andere punt. Wanneer de tekst wordt weergegeven, wordt "234 mi" weergegeven. Ik moet het gedeelte "mi" van deze tekst verwijderen omdat de tekst wordt geconverteerd naar een Int32 Een tabel in mijn DB bijwerken.

Eigenlijk kan ik alleen een INT hebben. Niets anders in het tekstvak. Hoe verwijder ik de "mi" aan het einde van de tekst?

Bedankt C # EB

0

3 antwoord

Op de postback kunt u, voordat u hem opslaat:

var saveValue = Int32.Parse(tbTarget.Text.Replace("mi", string.Empty).Trim());
1
toegevoegd

Een eenvoudige String.Substring werkt ook:

String leftPart = TxtMileAge.Text.Substring(0, txt.IndexOf(' '));
int mileAge = int.Parse(leftPart);

This retrieves the part of the String in the range of 0 - indexOfWhiteSpace and converts it to an int

Edit: Since the value can have decimal places (as you've commented), you need to parse it to double, round it and then cast it to int:

var txtEstDistance = new TextBox() { Text = "40.2 mi" };
String leftPart = txtEstDistance.Text.Substring(0, txtEstDistance.Text.IndexOf(' '));
double distanceMiles = double.Parse(leftPart, System.Globalization.CultureInfo.InvariantCulture);
int oDdstanceMiles = (int)Math.Round(distanceMiles, MidpointRounding.AwayFromZero);
0
toegevoegd
40.2 mi zou niet resulteren in een ArgumentOutOfRangeException , dat zou alleen gebeuren als er helemaal geen witruimte is. U kunt 40.2 niet parseren naar een int ( FormatException ) omdat er decimalen zijn. Dus je moet het naar een dubbel parseren en er vervolgens omheen draaien. Ik zal mijn antwoord bewerken.
toegevoegd de auteur Tim Schmelter, de bron
Bedankt Tim. Ik heb je code geprobeerd. Veranderde het een beetje naar: String leftPart = txtEstDistance.Text.Substring (0, txtEstDistance.Text.IndexOf ('')); int oDistanceMiles = int.Parse (leftPart); Ik krijg deze foutmelding: "Lengte kan niet kleiner zijn dan nul. Parameternaam: lengte" Ook is het nummer dat automatisch wordt ingevuld "40,2 mi" wat ik echt nodig is slechts 40 of een rond getal dat verschijnt. Afgeknipt op de komma. Formatteer ik de subtring verkeerd? Bedankt.
toegevoegd de auteur EB., de bron

Als je met een variabele lengte van tekens werkt (bijvoorbeeld dat iemand in plaats daarvan miles invoert), dan moet je een foreach doen tegen de string (een array van char) en check isumeriek op elke char.

0
toegevoegd