拆分字符串以访问其中的整数

时间:2012-02-19 15:37:59

标签: vb.net

我有一个字符串"<PinX F='53mm'></PinX>",我想访问字符串中的53并对它做一些补充,然后将答案添加回该字符串。我一直在考虑这个问题,并且不确定这是否可以用正则表达式完成?任何人都可以帮助我。

感谢

5 个答案:

答案 0 :(得分:1)

是的,您可以使用正则表达式。这将获取数字,将它们解析为数字,向其中添加一个数字,然后将其放回字符串中(也就是说,结果实际上是一个新字符串,因为字符串是不可变的)。

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

答案 1 :(得分:0)

答案 2 :(得分:0)

正则表达式看起来非常适合这个特定问题:

\d+

将匹配一个或多个数字。

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

将返回53.

答案 3 :(得分:0)

在这个案例中是的。 "'(.*?)'然后访问第一个组,但如果这是更大的xml的一部分,则不应使用正则表达式。您应该使用xml解析器构建到.net中,使用xsd查找属性并获取值。

答案 4 :(得分:0)

或者,这是一个小例程...

' 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()