在字符串中查找字符

时间:2015-02-08 14:41:19

标签: vb.net string

所以,我遇到了这个问题,我不知道如何处理它 假设我有一个格式如下的字符串:

“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。这只是一个示例代码,我使用的主要代码附加了太多东西,为此示例清理它将是一场噩梦

3 个答案:

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