在vb6中从字符串的左右两侧删除特定字符(TrimChar)

4

我想删除字符串中错误使用的某些特定字符。

"........我只想删除这段文字之外的点..............."

如您所见,我不能使用replace方法。我必须找到一种方法只删除字符串左右两侧的字符,而这些点只是我想要删除的字符之一。我有一个包含这些不需要的字符的数组。因此,在处理后,字符串应该像这样:

"我只想删除这段文字之外的点"

但我找不到一种方法来实现这个目标。

2个回答

12

VB6有一个Trim()函数,但它只能移除空格。

要从两端移除字符,您需要依次检查每个末端并删除字符,直到获得其他内容:

Function TrimChar(ByVal Text As String, ByVal Characters As String) As String
  'Trim the right
  Do While Right(Text, 1) Like "[" & Characters & "]"
    Text = Left(Text, Len(Text) - 1)
  Loop

  'Trim the left
  Do While Left(Text, 1) Like "[" & Characters & "]"
    Text = Mid(Text, 2)
  Loop

  'Return the result
  TrimChar = Text
End Function

结果:

?TrimChar("........I.wanna.delete.only.the.dots.outside.of.this.text...............", ".")
I.wanna.delete.only.the.dots.outside.of.this.text

这远非最优解,但你可以扩展它以仅计算结束位置,然后进行一次Mid()调用。


1
    Public Function Remove(text As String) As String

      text = Replace(text, "..", "")

      If Left(text, 1) = "." Then
         text = Right(text, Len(text) - 1)
      End If

      If Right(text, 1) = "." Then
         text = Left(text, Len(text) - 1)
      End If

      Remove = text

    End Function

如果您删除所有的 "..",那么可能会剩下一个或零个前置点和一个或零个后置点需要处理。如果您足够幸运,能够保证点的数量总是偶数的话,那么...
 text = Replace(text, "..", "")

这就是你所需要的。


1
你如何让 Replace() 函数区分你想保留的点和你不想保留的点?在他们知道“保留”部分是什么之前,他们无法替换整个字符串(这就是他们所询问的)。 - Deanna
嗯,是的。我假设(错误地?)他想保留的字符串是一个常量。 - Simon
1
编辑我的答案以提供可行的答案。与@Deanna的方法不同。 - Simon
借助@Deanna的帮助,我用了一种更长的方式完成了它。实际上,我也会将那个例子作为答案发布,但是你的答案简单明了,完全解决了问题。谢谢。 - Berker Yüceer
1
这会覆盖字符串中间的任何.. :| `.....那这个呢....它不再是他们想要的了 :|...." - Deanna
根据你的问题,这是错误的。你是否对那个设计感到满意取决于你自己。 - Deanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接