一个比较本的办法:) Dim s As String
s = "aa,aaa,,,s,,,,as,,,,,,ass,,asd,d,asd,,asd,,,asd,"
Do While InStr(s, ",,") <> 0
Debug.Print s
s = Replace(s, ",,", ",")
Loop
Debug.Print s
把逗号环成空格
s = "aa,aaa,,,s,,,,as,,,,,,ass,,asd,d,asd,,asd,,,asd,"
Do While InStr(s, ",,") <> 0
Debug.Print s
s = Replace(s, ",,", ",")
Loop
Debug.Print s
把逗号环成空格
解决方案 »
- vb有什么好的方式快速判断出下载文件的类型?
- from 语句语法错误
- 请问 sql server安装程序是什么软件做出来的,好漂亮,谢谢
- 文件保存指定路径问题?????
- 怎么能把开始按钮变的不可用了!!! 按windows键不起作用,谢谢
- 小弟我是个初学者,想听听大家对语言学习的意见!谢谢大家!
- 请问在vb里面怎么实现位操作?
- 请教:如何判断打印机(包括网络)是否连接正常!
- 日期问题请教高手!!!!!!!
- tdbgird如何设定某一行颜色为 红色
- 如何设置以代码方式生成的文件夹浏览对话框的初始文件夹?
- 挺着急的,我查了所有的csdn的贴子,也没找到符合要求的,请高手帮帮忙,关于mapi收信保存附件的问题?
Debug.Print TrimString(" 啊 ac B ")
End SubPrivate Function TrimString(str As String) As String
Dim strTemp As String
strTemp = str
Do While InStr(1, strTemp, Space(2)) > 0
strTemp = Replace(strTemp, Space(2), Space(1))
Loop
TrimString = strTemp
End Function够简单吧!
do while instr(1,m_str," ",1)>0
m_str=replace(m_str," "," ",1,,1)
loop
msgbox m_str
' Author:吴文智
' Date:2002-06-14
'Description:替换字符串中的重复字符,默认替换空格 Dim lngCount As Long '记数器,用来判断是不是有多个要替换的字符
Dim lngI As Long
Dim strTemp As String '用来存放操作过程中的字符串
lngCount = 0
'从尾开始可以为Mid函数的使用带来方便,不必总是重新计算长度
For lngI = Len(InputString) To 1 Step -1
If Mid(InputString, lngI, 1) = ReplaceString Then
lngCount = lngCount + 1 '记数直到下一个非替换字符为止
Else
If lngCount > 0 Then
'现在的字符串我们可以看成是:左边要保留的字符串(长度为lngI)+中间不要的字符串(长度为lngCount-1,因为要保留1个,不是全部删除)+右边要保留的字符串(起始位置在lngI+lngCount处,长度是直到末尾)
'我们要得到的结果是:左边的字串+1个替换字符+右边字串(下面的表达式里,替换字符被包含在第二个Mid函数的结果中)
'这里用了strTemp来存放结果,如果直接用InputString,那第二个Mid函数就会出错了,呵呵
strTemp = Mid(InputString, 1, lngI) & Mid(InputString, lngI + lngCount)
InputString = strTemp
End If
lngCount = 0
End If
Next
ReplaceSpace = InputString
End Function
fot tmp = 0 to Ubound(array1)
if array1(tmp) <> " " then strKey = strKey & array1(tmp)
next tmp
strSrc = strKey
自己没有亲自试,写得也不一定对,但用split肯定能行!
斑竹!
|----| |---| |--| |-|
1 2 3 4
如上字符串,可以看成四段字符串,中间没有空格.
算法思想为:取每个子字符串自己加,中间留一个空格.
定义start为子字符串的开始位置,length为子字符串的长度
定义resultstr为结果字符串,初值为""
从原字符串第一个字符开始读,读到出现空格为止,可以得到第一个子字符串的start和length,则resultstr=resultstr&Mid(inputstr,start,length)&" "
然后从下一个非空格开始,重复上述工作,注意的是最后一次不用加空格.
算法中子字符串的开始和结尾的判断可以在循环中使用标志量,相信大家都可以做.
这样写虽然代码会比较长,但效率应该比上述循环替换要高
Private Function Replace_Space(ByVal SourceString As String) As String
Dim i As Integer
Dim isSpace As Boolean
Dim strTmp As String
isSpace = False
For i = 1 To Len(SourceString)
strTmp = Mid(SourceString, i, 1)
If strTmp = " " Then
If Not isSpace Then
Replace_Space = Replace_Space & strTmp
isSpace = True
End If
Else
Replace_Space = Replace_Space & strTmp
isSpace = False
End If
Next i
End Function
Dim a$, m%
a = " 啊 ac B "
Do
m = Len(a)
a = Replace(a, " ", " ")
Loop Until m = Len(a)
解答: Public Function ReplaceNCharToChar(s As String, Optional Char As String = " ") As String
ReplaceNCharToChar = s
Do Until VBA.Len(VBA.Replace(ReplaceNCharToChar, VBA.String(2, Char), Char)) = VBA.Len(ReplaceNCharToChar)
ReplaceNCharToChar = VBA.Replace(ReplaceNCharToChar, VBA.String(2, Char), Char)
Loop
End Function
Private Sub Command4_Click()
VBA.MsgBox "[" & ReplaceNCharToChar(" s 我 是谁 aa b b cc ") & "]"
End Sub
虽然递归使得代码很简洁,可这大概也是效率最递的方法了。
Dim a As String
a = "aaaa bbbb cccc dddd "
Form1.Print a
MyTrim a
Form1.Print a
End Sub
Public Function MyTrim(ByRef TempStr As String) As Boolean
Dim Str1() As String
Dim I As Long
Dim TestStr As String
Str1 = Split(TempStr, " ")
For I = LBound(Str1) To UBound(Str1)
TestStr = TestStr & Trim(Str1(I)) &" "
Next I
TempStr = TestStr
End Function