2017-11-02 25 views
0

テキストファイル、.po形式を正確にインポートしようとしていますが、これには通常のテキストが含まれています。テキストファイル内の特定の文字列を検索して修正する方法

[テキスト例】

#:C:\ Users \ユーザーアンドレイ\デスクトップ\ sitemile_themes \ ProjectTheme /アーカイブ-project.php:69
#:C:ユーザー\ \アンドレイ\デスクトップ\ sitemile_themes \ ProjectTheme/taxonomy.php:108 はMSGID "すべての投稿のプロジェクト"
msgStrを "Всезапросы"

#:C:\ Users \ユーザーアンドレイ\デスクトップ\ sitemile_themes \ ProjectTheme /アーカイブ-project.php:70
#:C:\ Users \ andrei \ Desktop \ sitemile_themes \ Project私/ taxonomy.php:109 #、PHP形式
msgStrを
MSGID "%s内の最新の投稿者のプロジェクト" "Последниезапросыв%s" の

インポート後、私は、インポートされたテキストを通過する必要がありますmsgid "example"とmsgstr "example 2"で始まる文字列を見つけて、2つのカラムを持つlistview1にインポートします。msgidはアイテムですが、msgstrはサブアイテムですが、インポート後はこのようになります。

[例ListView1の]

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

そして、私はVBにテキストをインポートするには問題がなかったしました 'MSGID' と 'msgStrを' の下に引用符であるすべての文字列をインポートします。ネットフォームは、私はインポートされたテキストを通過することができないようだ "msgid" example "'と' msgstr" example 2 "'文字列。誰もがこれを達成する方法を考えている?

編集:申し訳ありませんが、私は現在使用しようとしているコードを表示するのを忘れていました!ファイルをインポートするには 、私は大丈夫動作します。このコード

 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 

を使用しますが、何らかの理由では、元のテキストファイルが持っている行を無視して、全体として(マルチラインが有効になって)私のテキストボックスに入れます。

と私は

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

を使用してスキャン文字列の。しかし、このコードでも、それが見つかった単一の行を追加していない何らかの理由で、私はそれが、まったく何を見つけたとは思いません。申し訳ありません初心者のコーディングのために、私はこのすべてに新しいです。

+0

任意のコードなしで助けてハード。あなたはちょうど私達があなたのためのコードを記述する場合、あなたは間違った場所に来ました。読む[尋ねます]と[ツアー]を取る – Plutonix

+0

まあ、あなたはそれが動作していない何をしましたか?あなたの努力の一例は、回答を得る良い方法です – Steve

+0

すみません!投稿を編集して、私が現在使っているコードを含めました。 –

答えて

0

これは、常に "msgid"と "msgstr"が同時に存在することを前提にしています。余分なスペースがあっても結果に影響しないように、最初のチェックで少し遅く歩くこともできます。そのようなものが何であれ使用しても問題はありません。

 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 

文字列の中を歩くより遅いが、少なくとも、あなたはコンセプトを参照してください。

 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 
関連する問題