自动增加字符串的最后一个整数值

Autoincrement a string's last integer value

我正在使用 vb.net 并从 mysql 数据库中读取一个字符串。现在字符串包含 "test 1"。我想将最后一位数字 (1) 增加值 1。我以某种方式使用了字符串长度并解决了它,但它仅适用于 "test 10" 以内的字符串,然后它不断添加空格,例如:"test 13"等等。我只想让字符串自动递增,例如 "test 20""test 100"。我该怎么做?

这是我使用的代码:

If reader2.Read Then
    var = reader2.GetInt64("version")
    a = reader2.GetString("project_id")
    location = reader2.GetString("location")
    governorate = reader2.GetString("governorate")
    memo = reader2.GetString("memo")
    title = reader2.GetString("project_title")

    var = var + 1
    Dim st As String
    st = a.Substring(0, a.Length - 2)

    st = st & " " & var

    b = st

b 应具有 "test 2" 的值或递增的最终值

核心问题是您使用的是 Substring(0, a.Length - 2),其中 2 是一个常数,即使位数增加也不会增加。

如果项目名称和编号之间有 space,您可以使用 String.Split 代替:

Dim version = reader2.GetInt64("version")
Dim projectID = reader2.GetString("project_id")
Dim token As String() = projectID.Split() ' splits by white-space characters '
Dim projectName As String = token(0).Trim()
Dim result As String = String.Format("{0} {1}", projectName, version + 1)

如果您想使用 Substring 而不是 Split:

' ... '
Dim projectName = projectID
Dim spaceIndex As Int32 = projectName.IndexOf(" ")
If spaceIndex >= 0 Then projectName = projectName.Substring(0, spaceIndex)
' ... '

如果在您的情况下投影是“描述值”,那么可以使用如下拆分功能轻松完成:

var = var + 1
Dim st As String
st = a.Split(" ")(0)
st = st & " " & var

b = st