2012-02-19 3 views
0

私は文字列"<PinX F='53mm'></PinX>"を持っていますが、文字列内の53にアクセスしてそれにいくつか追加して、その文字列に返答を追加します。私はこれについて考えてきましたが、正規表現でこれを行うことができるかどうかは分かりませんでしたか?誰でも私を助けることができます。文字列を分割してその中の整数にアクセスする

おかげ

+0

です。 – Kratz

答えて

1

はい、あなたは正規表現を使用することができますが返されます。これは、数字を取得し、数値に解析し、それを1つ追加して文字列に戻します(つまり、結果は文字列が不変のため新しい文字列になります)。

string s = Regex.Replace(
    input, 
    @"(\d+)", 
    m => (Int32.Parse(m.Groups[1].Value) + 1).ToString() 
); 
+0

申し訳ありませんが正規表現に精通していませんが、ここでmは何を表していますか? – aspiringCoder

+0

@StefanReaney:これは、各マッチを処理するメソッドのラムダ式です。 'm'は' MatchEvaluator'メソッドのパラメータなので、 'Match'型です。 – Guffa

0

HTML Agility Packを見てみましょう。

+0

なぜこの単純な文字列にHAPを使用するのですか? – Oded

+0

には別の方法がありますか? – aspiringCoder

+0

@Oded、HAPを使用すると、データ構造の変更が可能になります。正規表現と部分文字列の解決法は、データが一定の構造であることに依存します。 –

0

正規表現は、この特定の問題のために良いフィットのようになります。

\d+ 

は1桁以上の数字と一致します。

Int32.Parse(Regex.Match("<PinX F='53mm'></PinX>", @"\d+").Value) 

は53

0

この場合、「はい」です。 "'(.*?)'最初のグループにアクセスしますが、これが大きいxmlの一部である場合、正規表現は使用しないでください。 .netにxmlパーサービルドを利用し、xsdで属性を見つけて値を取得する必要があります。

0

また、ここでは小さなルーチンが正しい以下のように答えの1をマークご検討ください...

' Set testing string 
Dim s As String = "<PinX F='53mm'></PinX>" 

' find first occurence of CHAR (') 
Dim a As Integer = s.IndexOf("'") 
' find last occurence of CHAR (') 
Dim b As Integer = s.LastIndexOf("'") 

' get substring "53mm" from string 
Dim substring As String = s.Substring(a, b - a) 

' get integer values from substring 
Dim length As Integer = substring.Length 
Dim c As Char = Nothing 
Dim result As String = Nothing 
For i = 1 To length - 1 
    c = substring.Chars(i) 
    If IsNumeric(c) Then 
     result = result & c 
    End If 
Next 

Console.WriteLine(Int32.Parse(result)) 
Console.ReadLine() 
関連する問題