dim v as variant dim str as string "1999-2002,1,11,2001-2002,10,31" str=replace(str,"-",",") a=split(str,",") debug.print a(0),a(1)'自己看看结果吧
'写错了一个地方 dim v as variant dim str as string str="1999-2002,1,11,2001-2002,10,31" str=replace(str,"-",",") a=split(str,",") debug.print a(0),a(1)
Public Sub getChar(str As String) Dim a() As String Dim i As Long Do While InStr(str, "-") Mid(str, InStr(str, "-"), 1) = "," Loop a = Split(str) For i = 0 To UBound(a) Debug.Print a(i) Next i End Sub
一个效率不算高的办法,但是程序简单,呵呵Dim sRaw as string Dim sBuffer as string Dim a() as string sRaw="1,23,4-23,11,221-12" sbuffer=replace(sRaw,"-",",") a=split(sBuffer,",")
如果其中出现的仅仅是数值就好办!! Private Sub Form_Click() s = InputBox("string", "string") Print s s = "-" + Replace(s, ",", "-") t = -(Val(s)) Print t Do Until t = 0 s = Mid(s, Len(CStr(-t)) + 1) t = -(Val(s)) Print t, s Loop End Sub
import java.io.*;public class getstring{ public static void main(String args[]){ String a="2002-15,37-890979"; String[] b=new String[500]; int c=0; int d=1; int f=0; try{ for (c=0;c<a.length();c++,d++){ if((a.substring(c,d).equals("-"))||(a.substring(c,d).equals(","))){ f++; continue; }else{ b[f]=b[f]+a.substring(c,d); } } }catch(Exception e){ } System.out.println(b[1]); } }
Private Sub Form_Load() Dim sRaw As String Dim sBuffer As String Dim a() As String Dim n As Long Dim s As String sRaw = "1999-2003,11,1,2001-2002,8,23" ' sBuffer = Replace(sRaw, "-", ",") a = Split(sRaw, ",") sBuffer = "" For n = 0 To UBound(a) If sBuffer = "" Then s = "" Else s = "," End If If InStr(1, a(n), "-") Then sBuffer = sBuffer & s & GG(a(n)) Else sBuffer = sBuffer & s & a(n) End If Next End SubPrivate Function GG(ByVal sRaw As String) As String Dim n As Long Dim a() As String Dim sBuffer As String
a = Split(sRaw, "-") For n = a(0) To a(1) If sBuffer = "" Then sBuffer = n Else sBuffer = sBuffer & "," & n End If Next GG = sBuffer End Function
dim str as string
"1999-2002,1,11,2001-2002,10,31"
str=replace(str,"-",",")
a=split(str,",")
debug.print a(0),a(1)'自己看看结果吧
dim v as variant
dim str as string
str="1999-2002,1,11,2001-2002,10,31"
str=replace(str,"-",",")
a=split(str,",")
debug.print a(0),a(1)
Dim a() As String
Dim i As Long
Do While InStr(str, "-")
Mid(str, InStr(str, "-"), 1) = ","
Loop
a = Split(str)
For i = 0 To UBound(a)
Debug.Print a(i)
Next i
End Sub
Dim sBuffer as string
Dim a() as string
sRaw="1,23,4-23,11,221-12"
sbuffer=replace(sRaw,"-",",")
a=split(sBuffer,",")
Private Sub Form_Click()
s = InputBox("string", "string")
Print s
s = "-" + Replace(s, ",", "-")
t = -(Val(s))
Print t
Do Until t = 0
s = Mid(s, Len(CStr(-t)) + 1)
t = -(Val(s))
Print t, s
Loop
End Sub
public static void main(String args[]){
String a="2002-15,37-890979";
String[] b=new String[500];
int c=0;
int d=1;
int f=0;
try{
for (c=0;c<a.length();c++,d++){
if((a.substring(c,d).equals("-"))||(a.substring(c,d).equals(","))){
f++;
continue;
}else{
b[f]=b[f]+a.substring(c,d);
}
}
}catch(Exception e){
}
System.out.println(b[1]);
}
}
"1999-2002,1,11,2001-2002,10,31"
中我可以取到1999和2002。但是有一点我可能没有说明白:
比如:
"1999-2002,1,11,2001,1,1,2000-2002,10,31"
那么取得1999和2002 后我要处理的是1999到2002之间的所有数字,
你那样出来后,我只能处理1999和2002而已了。
我要处理的不懂的地方就是这里。向各位道谢,自己也没有说明白,多多包涵!!!!
Dim str As String
Dim v() As String
Dim i As Integer
str = "2000-2001,1-5,2001-2002,5-10"
str = Replace(str, "-", ",")
v = Split(str, ",")
For i = 0 To UBound(v)
Debug.Print v(i)
Next i
Dim sRaw As String
Dim sBuffer As String
Dim a() As String
Dim n As Long
Dim s As String
sRaw = "1999-2003,11,1,2001-2002,8,23"
' sBuffer = Replace(sRaw, "-", ",")
a = Split(sRaw, ",")
sBuffer = ""
For n = 0 To UBound(a)
If sBuffer = "" Then
s = ""
Else
s = ","
End If
If InStr(1, a(n), "-") Then
sBuffer = sBuffer & s & GG(a(n))
Else
sBuffer = sBuffer & s & a(n)
End If
Next
End SubPrivate Function GG(ByVal sRaw As String) As String
Dim n As Long
Dim a() As String
Dim sBuffer As String
a = Split(sRaw, "-")
For n = a(0) To a(1)
If sBuffer = "" Then
sBuffer = n
Else
sBuffer = sBuffer & "," & n
End If
Next
GG = sBuffer
End Function
http://expert.csdn.net/Expert/topic/1136/1136131.xml?temp=.1800653
这里的分也是你的。
等待结贴。
Dim str As String
str = "2000-2002,1,5,2001-2005,5,10"
MsgBox ConvertString(str)
End SubPrivate Function ConvertString(ByVal strSource As String) As String
Dim str As String
Dim i As Integer
Dim iValue1 As Integer
Dim iValue2 As Integer
Dim iPos As Integer
Dim strTmp1 As String
Dim strTmp2 As String
str = strSource
iPos = InStr(str, "-")
Do Until iPos <= 0
strTmp1 = ""
strTmp2 = ""
strTmp1 = Mid(str, iPos - 4, 4) & "-" & Mid(str, iPos + 1, 4)
iValue1 = CInt(Mid(str, iPos - 4, 4))
iValue2 = CInt(Mid(str, iPos + 1, 4))
For i = iValue1 To iValue2
strTmp2 = strTmp2 & CStr(i) & ","
Next i
strTmp2 = Left(strTmp2, Len(strTmp2) - 1)
str = Replace(str, strTmp1, strTmp2)
iPos = InStr(iPos, str, "-")
Loop ConvertString = str
End Function