所以,我遇到了这个问题,我不知道如何处理它 假设我有一个格式如下的字符串:
“3 6 9 12 13 15 16”
我正在搜索“6”,我在第3位找到它,然后将其删除。 接下来,我再次搜索6,并在IndexOf(6)位置找到它(无论是什么)。这次我不想删除它,因为它是16中的6。
if string1.contains(6) then
string1 = string1.RemoveAt(string.IndexOf(6),2)
end if
这是vbnet,但解决此问题的任何方法都会有所帮助。
P.S。这只是一个示例代码,我使用的主要代码附加了太多东西,为此示例清理它将是一场噩梦
答案 0 :(得分:1)
你问过一位"鸽友"解决方案,所以我给你一个:
Dim input As String = "3 6 9 12 13 15 16"
Dim output As String = String.Join(" ", input.Split(" "c).Where(Function(s) s <> "6"))
的
Debug.WriteLine(output)
3 9 12 13 15 16
答案 1 :(得分:0)
这可能有更优雅的方法,但如果您正在处理数字,将其转换为数字,那么您只需查找您感兴趣的数字。
如果您需要以空格分隔的形式,您可以随时将其转换回来。 我担心这个不会有任何“捷径”。
如果您正在使用由空格分隔的实际字符串,并且正在寻找模式,那么需要考虑的另一件事是,然后使用正则表达式。
Dim input As String = "3 4 5 6 13 14 15 16"
Dim inputArray() As String = input.Split(" ")
Dim lst As New List(Of Integer)
For Each s In inputArray
lst.Add(Convert.ToInt32(s))
Next
If lst.Contains(6) Then
lst.Remove(6)
End If
答案 2 :(得分:0)
解决问题的更好方法是使用正则表达式(在Mac OSX上使用sed测试):
echo "6 3 6 9 12 13 15 16" | sed -E "s/(6 |[^1-9]6| 6$)//g"
# outputs
3 9 12 13 15 16