繁体   English   中英

在字符串中查找字符

[英]Finding Characters in 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,但是任何解决此问题的方法都会有所帮助。

PS这只是一个示例代码,我正在使用的主要代码附加了太多东西,因此在此示例中进行清理将是一场噩梦

您要求一个“更高级”的解决方案,所以我给您一个:

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

这样做可能会有更优雅的方法,但是如果您要处理数字,将其转换为数字,则只需寻找您感兴趣的数字即可。

如果需要以空格分隔的形式,可以随时将其转换回去。 恐怕这将没有任何“捷径”。

如果要使用由空格分隔的实际字符串并正在寻找模式,则要考虑的另一件事是,正则表达式是解决之道。

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

解决此问题的更好方法是使用正则表达式(在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM