第1部分:应用场景
我们在应用程序开发的过程中,免不了与字符串打交道,之前华仔已经分享过提取文本和替换文本,今天增加一个新的,那就是替换所有中间文本中的某些字符串。单一的,我们都知道,replace()方法就可以实现,但是如果是一一坨字符串,有重复的中间文本,而这些重复的中间文本存在某个符号印象我们运用,比如说解序列报错等等,那就需要用今天这个方法了。
第2部分:例子说明
为了便于理解,我这里举个例子跟大家说明:
如下字符串:%9opw,43* 968 %9opw,23* 4133 %9opw,34,324*
我们要把%和*之间的字符串,将,替换掉,因为这个逗号影响了我们的后续操作
第3部分:解决方案
rem <summary> rem 替换所有中间文本的某段字符 rem </summary> rem <param name="PreStr">原文本</param> rem <param name="StartStr">前导文本</param> rem <param name="EndStr">结束文本</param> rem <param name="MidStr">需要被替换的字符串</param> rem <param name="ReplaceStr">要替换为的文本</param> rem <param name="RetainStartAndEnd">是否保留前后引导文本</param> rem <returns></returns> rem <remarks></remarks> Public Function ReplaceAllMiddleEachStr(ByVal PreStr As String, ByVal StartStr As String, ByVal EndStr As String, ByVal MidStr As String, ByVal ReplaceStr As String, Optional ByVal RetainStartAndEnd As Boolean = False) As String Try If InStr(PreStr, StartStr) = 0 Then Throw New Exception("前导文本不存在") End If If InStr(PreStr, EndStr) = 0 Then Throw New Exception("结束文本不存在") End If Dim DealArr() As String DealArr = Split(PreStr, StartStr) Dim DealArrList As ArrayList = New ArrayList(DealArr) DealArrList.RemoveAt(0) Dim DealResult As String = Split(PreStr, StartStr)(0) Dim ReplaceArrList As New ArrayList() For n As Integer = 0 To DealArrList.Count - 1 If InStr(DealArrList(n), EndStr) > 0 Then DealResult += Replace(Split(DealArrList(n), EndStr)(0), MidStr, ReplaceStr) + Replace(DealArrList(n), Split(DealArrList(n), EndStr)(0), "") DealArrList(n) = Split(DealArrList(n), EndStr)(0) DealArrList(n) = Replace(DealArrList(n), ReplaceStr, "") Else DealArrList(n + 1) = DealArrList(n) + DealArrList(n + 1) ReplaceArrList.Add(DealArrList(n)) End If Next Return DealResult Catch ex As Exception Throw ex End Try End Function
visualbasic(vb.net)中替换所有中间文本的某段字符串的结论
通过以上的visualbasic代码就可以很好的解决我们的问题,我这里是设置了返回值,且不断累加,所以可以精准替换每一个中间文本!
© 版权声明
THE END
暂无评论内容