如何查找和替换字符串中的重复数字并保留其中一个重复数字?
How do I find and replace a duplicate number in a string and keep one of the duplicate numbers?
我正在使用 Visual Basic 2010
我试图在字符串中找到特定的重复数字并将其替换为另一个数字,但保留字符串中的重复数字之一。例如:字符串是 24828
,我需要新字符串是 24628
,它保留 8 中的一个,而另一个 8 被 6 替换。在我的代码中,我用它替换了 8 和结果是 24626
。它正在用 6 替换两个 8。谁能帮忙?注意:此示例中有两个重复数字,但我需要的特定重复数字是 8 而不是 2。此外,替换或保留哪个 8 并不重要。谢谢!更新到此 post... 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
Dim OldText As String = "24828"
Dim NewText As String = OldText.Replace("4828","4628")
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 }
我认为这很好用:
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
。
我正在使用 Visual Basic 2010
我试图在字符串中找到特定的重复数字并将其替换为另一个数字,但保留字符串中的重复数字之一。例如:字符串是 24828
,我需要新字符串是 24628
,它保留 8 中的一个,而另一个 8 被 6 替换。在我的代码中,我用它替换了 8 和结果是 24626
。它正在用 6 替换两个 8。谁能帮忙?注意:此示例中有两个重复数字,但我需要的特定重复数字是 8 而不是 2。此外,替换或保留哪个 8 并不重要。谢谢!更新到此 post... 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
Dim OldText As String = "24828"
Dim NewText As String = OldText.Replace("4828","4628")
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 }
我认为这很好用:
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
。