【问题标题】:How can I replace various parts of a string in the same line?如何替换同一行中字符串的各个部分?
【发布时间】:2015-11-18 09:45:14
【问题描述】:

我有这些字符串:

Database_123456.bak

我只需要取号码:

123456

我这样做:

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

这还给我:

123456.bak

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

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

有什么办法可以把同一行的两个部分替换成缩写吗?

谢谢

【问题讨论】:

标签: .net vb.net string replace


【解决方案1】:

您可以使用[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】:

    您可以尝试使用正则表达式:

    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
    

    【讨论】:

    • 我不是反对者,但您的代码无法编译。 As output 没有任何意义; Dim res = 可以。
    【解决方案3】:

    如果我理解正确,这对你有用

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

    【讨论】:

      【解决方案4】:
             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;
                  }               
              }
      

      【讨论】:

      • 此外,这是一个仅代码的答案,也很糟糕。
      猜你喜欢
      • 2022-12-28
      • 2014-01-04
      • 2019-09-26
      • 2011-08-10
      • 1970-01-01
      • 2012-06-27
      • 2011-03-25
      相关资源
      最近更新 更多