如何增加字符串中存在的数值

时间:2018-12-24 14:10:32

标签: vb.net

我正在vb.net中使用此查询

Raw_data = Alltext_line.Substring(Alltext_line.IndexOf("R|1"))

并且我想使用for循环将R|1增加到R|2R|3,依此类推。

我尝试了很多方法但都出错了

  

要加倍的字符串无效

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:0)

您必须首先从字符串中提取数字。如果文本部分("R"与数字部分之间始终用"|"分开,则可以使用Split轻松地将两者分开:

Dim Alltext_line = "R|1"
Dim parts = Alltext_line.Split("|"c)

parts是一个字符串数组。如果结果为两部分,则字符串具有预期的形状,我们可以尝试将第二部分转换为数字,将其增加,然后使用增加的数字重新创建字符串

Dim n As Integer
If parts.Length = 2 AndAlso Integer.TryParse(parts(1), n) Then
    Alltext_line = parts(0) & "|" & (n + 1)
End If

请注意,c中的"|"c表示VB中的Char常量。

答案 1 :(得分:0)

一种替代方法,该方法利用了定义为字符数组的String类型。

我正在使用string.Concat()拼凑所得的IEnumerable(Of Char)CInt(),以将字符串转换为Integer并将其总和1转换为其值。

Raw_data = "R|151"

Dim Result As String = Raw_data.Substring(0, 2) & (CInt(String.Concat(Raw_data.Skip(2))) + 1).ToString

当然,这假定源字符串可以直接转换为Integer类型。 如果需要进行值检查,则可以使用Integer.TryParse()进行验证:

Dim ValuePart As String = Raw_data.Substring(2)
Dim Value As Integer = 0

If Integer.TryParse(ValuePart, Value) Then
    Raw_data = Raw_data.Substring(0, 2) & (Value + 1).ToString
End If

如果左侧部分可以变化(大小或内容),则the answer provided by Olivier Jacot-Descombes已经涵盖了这种情况。

答案 2 :(得分:0)

Sub IncrVal()
    Dim s = "R|1"
    For x% = 1 To 10
        s = Regex.Replace(s, "[0-9]+", Function(m) Integer.Parse(m.Value) + 1)
    Next
End Sub