2010-11-29 3 views
0

Ich habe den folgenden Text gelesen, der aus einer TXT-Datei gelesen wurde, möchte aber jede der drei Zahlen einzelnen Variablen zuordnen. Wie kann ich das erreichen?Splitten von Strings und Zuweisen von Split-Segmenten zu Variablen

(234.134, 105.087, 0.000000) 

EDDIT:

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim str As String 
    Dim XVAL As String 
    Dim YVAL As String 
    Dim ZVAL As String 

    Dim strArr() As String 
    Dim count As Integer 
    str = "(0.123, 4.467, 8.910)" 
    strArr = str.Split(", ") 
    For count = 0 To strArr.Length - 3 
     XVAL = (strArr(count)) 
    Next 
    For count = 0 To strArr.Length - 2 
     YVAL = (strArr(count)) 
    Next 
    For count = 0 To strArr.Length - 1 
     ZVAL = (strArr(count)) 
    Next 

    Label1.Text = XVAL + ZVAL 
    Label2.Text = YVAL 
    Label3.Text = ZVAL 

End Sub 

erst jetzt das Produkt von XWert und Zval als 0.123 8.910 angezeigt und nicht 0,123 + 8,910 = 9,033

die 9.033, die etwas im ist nach

Antwort

0

Vorausgesetzt, dass Ihr Format konsistent ist, wären Reguläre Ausdrücke ein guter Ansatz, um diese Informationen zu erhalten. Wenn Sie Abschnitte eines regulären Ausdrucks in Klammern einschließen, können Sie später den Wert dieser Abschnitte der Zeichenfolge mithilfe der Eigenschaft .Groups in Ihrem RegEx-Ergebnis abrufen. Hier ist ein einfaches Beispiel:

Dim toMatch as String = "(234.134, 105.087, 0.00000)" 
Dim regEx as Regex = new Regex("\((\d*(\.\d+)?), (\d*(\.\d+)?), (\d*(\.\d+)?)\)") 

Dim match as Match = regEx.Match(toMatch) 
Dim var1 as Float = Float.Parse(match.Groups(1).Value) 
Dim var2 as Float = Float.Parse(match.Groups(3).Value) 
Dim var3 as Float = Float.Parse(match.Groups(5).Value) 

Sie werden prüfen soll, ob der reguläre Ausdruck korrekt ist (es gibt viele Websites online, wo Sie mit regulären Ausdrücken spielen, und auch, dass die passenden Gruppen richtig ausrichten (Sie können spielen mit den Gruppen, um herauszufinden, was Sie brauchen

+0

Ich habe es geschafft, Folgendes zu codieren (siehe eddit): – alf

1

Ich mag string.Split und TryParse.

string input = "(234.134, 105.087, 0.000000)"; 
string[] numbers = input.Split(
         new[] { ',', ')', '(' }, 
         StringSplitOptions.RemoveEmptyEntries); 
double x, y, z; 
if (double.TryParse(numbers[0], 
        NumberStyles.Any, 
        CultureInfo.InvariantCulture, 
        out x)) 
{ 
    // first string was not a valid number 
} 

if (double.TryParse(numbers[1], 
        NumberStyles.Any, 
        CultureInfo.InvariantCulture, 
        out y)) 
{ 
    // second string was not a valid number 
} 

// and so on 

Da dies ein wenig fad Code gibt, kann das sich wiederholende Verhalten in einem Verfahren eingekapselt werden (könnten Aktualisieren Sie die Antwort später; muss zum Zug eilen ...).