如何在同一行中替换字符串的各个部分?

时间:2015-11-18 09:45:15

标签: .net vb.net string replace

我有这些字符串:

Database_123456.bak

我只需要输入数字:

123456

我这样做:

 Dim number As String = Replace("Database_123456.bak", "Database", "")

这回报我:

123456.bak

我必须添加另一个变量来再次替换最后一部分:

Dim FinalNumber as string = Replace(number, ".bak", "")

有没有办法更换同一行中的两个部分,缩写?

感谢

4 个答案:

答案 0 :(得分:2)

您可以尝试使用Regex:

Dim x As String = "Database_123456.bak"
Dim res = Integer.Parse(Regex.Replace(x, "[^\d]", ""))

或只是

Dim res = Regex.Matches("Database_123456.bak", "\d+")

您还必须导入

Imports System.Text.RegularExpressions

答案 1 :(得分:2)

您可以使用[String].Replace将替换链接在一起,这样您就可以在一行中完成所有操作:

Dim finalNumber = "Database_123456.bak".Replace("Database_", "").Replace(".bak", "")

注意:您在第一个替换示例中错过了下划线字符

为了改善这一点,您可能希望查看Integer.TryParse以检查结果是否实际上是整数。像这样:

    Dim inputString As String = "Database_123456.bak"
    Dim finalNumber As Integer
    If Integer.TryParse(inputString.Replace("Database_", "").Replace(".bak", ""), finalNumber) Then
        MessageBox.Show("The final number is " & finalNumber)
    Else
        MessageBox.Show("The string is not in the correct format")
    End If

另外注意上下壳体,因为更换是区分大小写的

答案 2 :(得分:1)

我是新来的,但如果我理解正确,这将为你效力

string text = "Database_123456.bak";

string number = text.Split('_')[1].Split('.')[0];

答案 3 :(得分:0)

       string str = "Database_123456.bak";

        string exteractNumber = string.Empty;

        foreach (char c in str.ToCharArray())
        {
            int result;
            if (int.TryParse(c.ToString(), out result))
            {
                exteractNumber = exteractNumber + c;
            }               
        }