2017-11-02 3 views
0

Ich habe versucht, eine Textdatei zu importieren, .po-Format, um genau zu sein, die regulären Text enthält.So suchen Sie nach bestimmten Zeichenfolgen in einer Textdatei und ändern sie

[Text Beispiel]

#: C: \ Benutzer \ andrei \ Desktop \ sitemile_themes \ ProjectTheme/Archiv-project.php: 69
#: C: \ Benutzer \ andrei \ Desktop \ sitemile_themes \ ProjectTheme/taxonomy.php: 108 msgid "Alle Posted Projects"
msgstr "Все запросы"

#: C: \ Benutzer \ andrei \ Desktop \ sitemile_themes \ ProjectTheme/Archiv-project.php: 70
#: C: \ Benutzer \ andrei \ Desktop \ sitemile_themes \ ProjectThe me/taxonomy.php: 109 #, php-Format
msgid "Latest Veröffentlichen Projekte in% s"
msgstr "Последние запросы в% s"

Nach dem Import muß ich durch importierten Text gehen und finde strings, die mit msgid "example" und msgstr "example 2" beginnen und diese in eine listview1 importieren, die 2 Spalten hat, da msgid ein Element ist, während msgstr ein Unterelement ist, würde nach dem Import so aussehen.

[Beispiel ListView1]

Column One | Column Two 
Example  | Example 2 
-------------------------- 

Und jede Zeichenfolge importieren, die in Anführungszeichen unter 'msgstr' und 'msgstr' ist ich kein Problem mit dem Import der Text in vb hatte. net form, aber ich bin anscheinend nicht in der Lage, durch importierten Text zu gehen und 'msgid "example"' und 'msgstr "example 2' 'strings herauszuziehen. Hat jemand eine Idee, wie man das erreicht?

EDIT: Es tut mir leid, ich habe vergessen, den Code, den ich gerade versuche zu verwenden! die Datei zu importieren, ich verwende diesen Code

 Dim fileReader As System.IO.StreamReader 
     fileReader = 
My.Computer.FileSystem.OpenTextFileReader("C:\Users\pasha\Desktop\en_US.po") 
     Dim stringReader As String 
     stringReader = fileReader.ReadToEnd() 
     TextBox1.Text = stringReader 

Welche Ordnung funktioniert, aber aus irgendeinem Grund bringt es auf meine Textbox (Multi-Line-enabled) als Ganzes, ohne auf die Linien, die die ursprüngliche Textdatei hat.

Und für das Scannen von Strings i verwenden

For Each line In TextBox1.Text 
    If line.ToString.Contains("msgid") Then 
     ListView1.Items.Add(line.ToString.Replace("msgid ", "")) 
    End If 
Next 

Aber aus irgendeinem Grund hat dieser Code nicht einmal eine einzige Zeile hinzufügen, dass es findet, ich glaube nicht, es auch etwas überhaupt findet. Sorry für eine Neuling Codierung, ich bin neu in all dem.

+0

Fest ohne Code zu helfen. Wenn Sie nur uns für Sie schreiben Code möchten, können Sie an der falschen Stelle kam. Lesen Sie [fragen] und nimm die [Tour] – Plutonix

+0

Nun, was hast du getan, das funktioniert nicht?Ein Beispiel für Ihre Bemühungen ist eine gute Möglichkeit, Antworten zu erhalten – Steve

+0

Es tut mir leid! Ich habe den Post bearbeitet und den Code, den ich gerade verwende, eingefügt. –

Antwort

0

Dies wird davon ausgehen, dass Sie immer "msgid" und "msgstr" gleichzeitig haben. Sie können auch ein wenig langsamer gehen, indem Sie das erste "überprüfen", so dass, wenn Sie zusätzliche Leerzeichen haben, es das Ergebnis nicht beeinflussen wird. Wenn es IMMER so sein wird, dann können Sie es so verwenden.

 Dim fileReader As System.IO.StreamReader 
     fileReader = My.Computer.FileSystem.OpenTextFileReader("C:\dump\test.po") 
     Dim stringReader As String = "" 
     stringReader = fileReader.ReadToEnd() 
     Dim msgList As New List(Of KeyValuePair(Of String, String)) 
     Do Until InStr(stringReader.ToLower, "msgid") = 0 
      Dim xmsgid As String = "" 
      Dim xmsgstr As String = "" 
      stringReader = Strings.Mid(stringReader, InStr(stringReader.ToLower, "msgid") + 7) 
      xmsgid = Strings.Left(stringReader, InStr(stringReader, Chr(34)) - 1) 
      stringReader = Strings.Mid(stringReader, InStr(stringReader.ToLower, "msgstr") + 8) 
      xmsgstr = Strings.Left(stringReader, InStr(stringReader, Chr(34)) - 1) 
      msgList.Add(New KeyValuePair(Of String, String)(xmsgid, xmsgstr)) 
     Loop 

Langsamer Spaziergang in der Zeichenfolge aber zumindest Sie das Konzept zu sehen.

 Dim fileReader As System.IO.StreamReader 
     fileReader = 
     My.Computer.FileSystem.OpenTextFileReader("C:\dump\test.po") 
     Dim stringReader As String = "" 
     stringReader = fileReader.ReadToEnd() 
     Dim msgList As New List(Of KeyValuePair(Of String, String)) 
     Do Until InStr(stringReader.ToLower, "msgid") = 0 
      Dim xmsgid As String = "" 
      Dim xmsgstr As String = "" 
      stringReader = Strings.Mid(stringReader, InStr(stringReader.ToLower, "msgid")) 
      stringReader = Strings.Mid(stringReader, InStr(stringReader.ToLower, Chr(34)) + 1) 
      xmsgid = Strings.Left(stringReader, InStr(stringReader, Chr(34)) - 1) 
      stringReader = Strings.Mid(stringReader, InStr(stringReader.ToLower, "msgstr")) 
      stringReader = Strings.Mid(stringReader, InStr(stringReader.ToLower, Chr(34)) + 1) 
      xmsgstr = Strings.Left(stringReader, InStr(stringReader, Chr(34)) - 1) 
      msgList.Add(New KeyValuePair(Of String, String)(xmsgid, xmsgstr)) 
     Loop 
Verwandte Themen