6

私が持っているもの

ですから、私が学校で取り組んでいるこの大きなプロジェクトがあり、小さいながらも重要な部分を除いて、すべてが機能しています。私が取り組んでいるプログラムは、通貨を変換し、txtファイルからレートを取得する必要があります。ファイルは次のようになります。

USD 1,2694
JPY 100,44
BGN 1,955
CZK 25,396
DKK 7,45792
...

名前と値の間にはタブ区切りがあり、値と次の通貨名の間には改行があります。値には浮動小数点があり、固定長ではありません。

必要なもの:

この文字列を2つの配列、、、または2次元配列に分割する必要がcurrencyNames()あります。currencyValues()currency()

自分でできること:

私はそれをファイルから文字列にロードすることができます

fileReader = My.Computer.FileSystem.ReadAllText("rates.txt")

そして、私はそれを単純なループで配列に分割することができました

Do While i < 32
    dummyArray = Split(fileReader, " ")
    i += 1
Loop

ただし、ファイル内に名前と値を区切るスペースがある場合に限ります。

4

3 に答える 3

3

基本的な考え方は次のようなものです。

  • ファイルから各行を読み取ります
  • スペースバーで線を分割します
  • 分割の最初の部分として国を保存します
  • 整数としてフォーマットされた2番目の部分として金額を格納します
  • 国と金額を別々の配列に投影します

これがVb.Netでの簡単な実装です

Sub Main

    dim input = System.IO.File.ReadAllLines("c:\yourdata.txt")

    dim projection = from line in input
                    let split = line.Split(new string(){" "},StringSplitOptions.RemoveEmptyEntries)
                    select Country = split.First(), Amount = split.Last().Replace(",","").Parse()

    dim countries = projection.Select(function(p) p.Country).ToArray()
    dim amounts = projection.Select(function(p) p.Amount).ToArray()

End Sub

また、小さな拡張メソッドを使用してラップしましたInteger.TryParse

namespace ExtensionMethods
    public module Extensions
        <Extension()>_
        public function Parse(byval value as string) as integer
            dim i = 0
            if integer.TryParse(value,out i) then
                return i
            end if
            return 0
        end function
    end module
end namespace
于 2012-11-20T13:52:02.843 に答える
3

あなたが探しているのは、タブや改行などの特殊文字の特殊文字列のセットであるVB ConstantsvbTabです。リンクにリストがありますが、特にあなたのものはandvbCrLfです。何もインポートする必要はありません。これらは VB に組み込まれています。

それらを使用するには、次のように変更します。

dummyArray = Split(fileReader, vbCrLf) ' to split on lines

その後:

For Each s as String In dummyArray
  otherArray = Split(s, vbTab) ' to split on tab characters
于 2012-11-20T14:09:48.953 に答える
1

ReadLine() と String.Split() の組み合わせは、問題の解決に役立ちます。

ReadLine() を使用して各項目を 1 行ずつ読み取る場合は、次のようにスペースで分割できます。

ReadLine().Split(' ').First(); 

ReadLine().Split(' ').Last(); 

ペアから関連する値を取得します。

于 2012-11-20T13:21:51.730 に答える