我正在使用Visual Basic 2010
我正在尝试在字符串中找到特定的重复数字,并将其替换为另一个数字,但保留字符串中的一个重复项。例如:字符串为24828
,我需要新的字符串为24628
,其中保留了8个中的一个,另外8个被替换为6.在我的代码中,我将其替换为两个都是8,结果是24626
。它正在用6来代替8& s。有人可以帮忙吗?注意:此示例中有两个重复的数字,但我需要的特定副本是8而不是2.此外,更换或保留哪个8并不重要。谢谢!更新到这篇文章... 5位数字符串并不总是24828
。我使用此字符串作为示例。甚至可能有一个完全没有任何8个字符串的字符串。我需要检查任何包含多个字符串的字符串8.如果它有一个8,那么字符串不需要更改。
Dim strText As String = "24828"
Dim newStrText As String = ""
Dim nIndex = strText.IndexOf("8")
If nIndex > -1 Then
MessageBox.Show("Found 8")
newStrText = strText.Replace("8", "6")
MessageBox.Show(newStrText)
Else
MessageBox.Show("There is no 8")
End If
答案 0 :(得分:0)
Dim OldText As String = "24828"
Dim NewText As String = OldText.Replace("4828","4628")
答案 1 :(得分:0)
Dim s = "24828"
Dim i = s.IndexOf("8")
If i >= 0 Then
Mid(s, i + 1, 1) = "6" ' "24628"
End If
或
Dim s = "24828"
Dim s2 = Join(Split(s, "8", 2), "6") ' "24628"
实际上,Replace
方法有一个Count
参数来限制替换次数:
Dim s = "24828"
Dim s3 = Replace(s, "8", "6", , 1) ' "24628"
<强>更新强>
我没有读完整个问题。要计算8
的数量:
Dim s = "24828"
Dim count = Split(s, "8").Length - 1 ' 2
查找字符串中的所有重复字符:
Dim s = "24828"
Dim dupliates = (From d In s Group By d Into g = Group Where g.Count > 1 Select d).ToArray ' { "2"c, "8"c }
或查找重复字符的索引:
Dim s = "24828"
Dim dupliateIndexes = Enumerable.Range(0, Len(s)).GroupBy(Function(i) s(i)).SelectMany(Function(g) g.Skip(1)).ToArray ' { 3, 4 }
答案 2 :(得分:0)
我认为这很有效:
Dim text = "24828"
Dim split = text.Split("8"c)
Dim result = If(split.Length > 1, _
String.Join("6", split.Take(split.Length - 1)) + "8" + split.Last(), _
text)
我得到24628
。