在字符串中查找字符
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,但任何解决此问题的方法都会有所帮助。
P.S。这只是一个示例代码,我使用的主要代码附加了太多东西,为这个例子清理它会是一场噩梦
可能有更优雅的方法来做到这一点,但如果您正在处理数字,将其转换为数字,那么您可以只查找您感兴趣的数字。
如果您需要 space 分隔形式,您可以随时将其转换回来。
恐怕没有这个了"shortcuts"
如果您正在使用由 space 分隔的实际字符串并正在寻找模式,那么需要考虑的另一件事是正则表达式。
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
您要求 "fancier" 解决方案,所以我会给您一个:
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
所以,我遇到了这个问题,我不知道如何处理它 假设我有一个格式如下的字符串:
"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。这只是一个示例代码,我使用的主要代码附加了太多东西,为这个例子清理它会是一场噩梦
可能有更优雅的方法来做到这一点,但如果您正在处理数字,将其转换为数字,那么您可以只查找您感兴趣的数字。
如果您需要 space 分隔形式,您可以随时将其转换回来。 恐怕没有这个了"shortcuts"
如果您正在使用由 space 分隔的实际字符串并正在寻找模式,那么需要考虑的另一件事是正则表达式。
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
您要求 "fancier" 解决方案,所以我会给您一个:
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