我正在vb.net中使用此查询
Raw_data = Alltext_line.Substring(Alltext_line.IndexOf("R|1"))
并且我想使用for循环将R|1
增加到R|2
,R|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