如何在String的字符之间添加斜杠?

时间:2015-09-27 21:00:06

标签: vba

我正在尝试在字符串中的字符之间添加斜杠,例如: G。你好 - > H / E / L / L / O

我尝试使用Replace(string,“”,“/”)但字符串保持不变。

2 个答案:

答案 0 :(得分:0)

试试这个:

Sub Main
dim initial_text as string
dim final_text as string 
initial_text = "hello"
final_text = ""

Dim i As Integer

For i = 1 To len(initial_text)

   if i =  len(initial_text) then
      final_text = final_text + Mid(initial_text,i,1)
   else 
      final_text = final_text + Mid(initial_text,i,1) + "/"
   end if

Next i
   msgbox final_text
End Sub

修改

对于学习porpuse,我根据评论添加另一个答案(下一个答案也是一个很好的答案):

Dim s As String
s = "Hello"

@wqw

Debug.Print Left(Replace(StrConv(s, vbUnicode), Chr$(0), "/"), Len(s) * 2 - 1)

@Jeeped

Debug.Print Left(Join(Split(StrConv(s, vbUnicode), Chr$(0)), "/"), Len(s) * 2 - 1)

答案 1 :(得分:0)

以下是我使用PHP的preg_replace函数的仿真,它允许一个简单的正则表达式来完成这项工作。前瞻部分也摆脱了最后的斜线。

Option Explicit

Private Sub Form_Load()
    Dim s As String
    s = "Hello"
    Debug.Print preg_replace("(.)(?=.)", "$1/", s)
End Sub

Public Function preg_replace(sPattern As String, sReplace As String, sText As String) As String
    Dim lIdx            As Long

    With CreateObject("VBScript.RegExp")
        .Global = True
        If Left$(sPattern, 1) = "/" Then
            lIdx = InStrRev(sPattern, "/")
            .Pattern = Mid$(sPattern, 2, lIdx - 2)
            .IgnoreCase = (InStr(lIdx, sPattern, "i") > 0)
            .MultiLine = (InStr(lIdx, sPattern, "m") > 0)
        Else
            .Pattern = sPattern
        End If
        preg_replace = .Replace(sText, sReplace)
    End With
End Function