如何在字符串中查找并替换重复的数字并保留其中一个重复的数字?

时间:2016-09-03 13:15:18

标签: vb.net string visual-studio-2010 replace

我正在使用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

3 个答案:

答案 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