我有一个像the number 5 comes after number 3 and number 2
这样的字符串,需要用7,2,1替换数字5,3,2。
使用string.replace会导致:
用7代替5之后:
the number 7 comes after number 3 and number 2
用2替换3后:
the number 7 comes after number 2 and number 2
:
the number 7 comes after number 1 and number 1
第二个数字显然是错误的。所以我需要使用占位符,如%firstnumber %% secondnumber %% thirdnumber%,然后将数字输入,但它可能真的很烦人sicne一些字符串可以有很多数字。
更换字符串中的数字会有什么更好的方法?
我有3个变量。第一个包含整个旧字符串(数字5在第3和第2之后),第二个包含旧数字(532),第三个包含新数字(721)。
我知道该怎么做,但我觉得必须有一个更好的方法去做,因为它看起来不对我。
答案 0 :(得分:2)
好的......如果我正确理解你的场景你可以做的是一次从源字符串到目标字符串读取一个字符。每次我们这样做,我们检查是否需要更换角色。每次我们更换时,我们都使用下一个字符来匹配。
Dim NumsToMatch As String {"2", "5"}
Dim ReplaceNums as String {"6", "6"}
Dim SourceString as String = "this is 2 my test 5 string"
Dim DestinationStr as New StringBuilder
Dim x = 0
For Each element As Char In SourceString
If element = NumsToMatch(x) Then
DestinationStr.Append(ReplaceNums(x))
x += 1
Else
DestinationStr.Append(element)
End If
Next
Dim OutputStr = DestinationStr.ToString
输出将是"这是6我的测试6字符串"
答案 1 :(得分:0)
不要替换....如果每次动态构造字符串会更好......
Dim Num1 as Integer
Dim Num2 as Integer
Dim Num3 as Integer
Dim OutputStr = "the number " & Num1 & " comes after the number " & Num2 & " and number " & Num3
然后,您需要做的就是每次需要新字符串时提供您的号码。
更新
myStr = "The number 5 comes after number 3 and number 2"
myStr.Replace("5", "7", 11, 3)
myStr.Replace("3", "2", 32, 3)
myStr.Replace("2", "1", 45)
答案 2 :(得分:0)
另一种选择是使用字符串的索引。如果你有一个像
这样的字符串yourStr =“5不是2和3”
字符串的长度为16, 数字5的索引/位置在yourStr(0) 数字2的索引/位置在yourStr(9) 3号索引/位置在yourStr(15)
中将索引的数量保存到列表或整数数组中。无论你喜欢什么,然后通过循环,你可以用你想要的字符替换每个字符
说你现在有list
,
mylist(0)= 0 mylist(1)= 9 mylist(2)= 15
For each item as integer in mylist
if myStr(item) = "0" then
'mystr.replace()
elseif myStr(item) = "1" then
'mystr.replace()
end if
End For
这只是我的想法,我知道还有另一种方法可以做到,但是... ..
答案 3 :(得分:0)
我不确定为什么String.Format()
尚未被提及。
String.Format("The number {0} is bigger than {1} is bigger than {2}", 5, 2, 1)
' The result is "The number 5 is bigger than 2 is bigger than 1"
如果您的字符串中已经包含数字,并且您无法替换源字符串中的值,则可以执行以下操作:
{}
包裹的数字是字符串