2011-12-07 25 views
2

私のプロジェクトの一部は、外部ソース(Googleドキュメント)から文字列変数を取得して解析することです。この文字列は幅と高さを表します。 取得に問題はありません。ただ2つの文字列に解析するだけです。 文字列には4つのバリエーションがあります。ここ は例である:vb.netの文字列を解析する必要があります

3"x4" 
3"hx4"w 
3hx4w 
3x4 

幅は常に最初の数であり、高さは常に秒です。場合によっては、幅と高さに小数点があります。

私はregex nubeです。誰かがこれを数値の2つの文字列にしか解析できない場合、私は非常に義務づけられます。正規表現の

答えて

3
Dim matches = Regex.Matches("3.45x4.3""", "[\d.]+") 

Console.WriteLine("width: " + matches(0).Value) 
Console.WriteLine("height: " + matches(1).Value) 

英語表現は基本的に[\d.]ある数字またはドットのいずれかである文字です。 +は、1つ以上を意味します。次のような

+0

あなたがmaaaan男です!どうもありがとう。 – boruchsiper

+0

vbフォークの場合は、vbのコードを次に示します。Dim matches = Regex.Matches( "3.45x4.3" "、" [\ d。] + ") Console.WriteLine(" width: "+ matches 0).Value) Console.WriteLine( "height:" + matches(1).Value) – boruchsiper

2

、あなたもこれを行うには、正規表現の使用を検討する必要があり、それを

Dim s as string = GetStrinFromDocs() 

' remove quotes 
s.replace("""","") 

'remove other chars 
s.replace("w","") 
s.replace("h","") 

dim Width as integer = ctype(s.split("x")(0),integer) 
dim Height as integer = ctype(s.split("x")(1),integer) 

を行うための簡単な方法だろう、私はあなたのように魚に学ぶお勧めしますそれは配当を支払うでしょう、これは正規表現と解析するための非常に単純な文字列です。

編集:これは私が思ったよりも簡単です。私がここで述べたものの大部分を使う必要はありません。なぜなら、同じ行でこれらの測定値を複数回ウェイティングする必要がないからです。 Check out Yuriy's answer。それでも、残りの部分をチェックし、正規表現の学習を開始してください:)

あなたがマッチしたデータを取得するには、グループ化/キャプチャを使用する必要があります。グループ物事はあなたがそれらのために非キャプチャグループをキャプチャする、または使用する必要はありませんしないでください

(someTextToMatch) 

(?:someTextToMatch) 

(あなたがこれを行うには括弧と一致しようとしているものを包みます

\s  match any single whitespace character 
\d  match any single digit 
.  match any single character 
[Xx] match a single upper-case or lower-case x 
?  match one or zero of the previous match 
+  match one or more of the previous match 
*  match zero or more of the previous match (probably won't need this here) 

すぐに便利な言語要素をあなたはおそらくこの例ではこれらを必要としませんが、あなただけの9つのキャプチャを取得するよう、あなたは最終的にそれらを必要とする場合があります)

いくつかのドキュメント:

私はまた、正規表現のチュートリアルのためにグーグルをお勧めします。ここに1つあります。ネットの特定:

関連する問題