Public Class xi Private i, j, k As Integer Public Shared Function replace(ByVal strsource As String, ByVal r As String, ByVal b As String) As String Dim f As Integer Dim s As String f = 0 s = strsource.ToLower If s.Length > r.Length Then Do While f <= s.Length - r.Length If s.Substring(f, r.Length) = r Then If f = 0 Then s = b + s.Substring(r.Length) ElseIf f >= 1 Then s = s.Substring(0, f - 0) + b + s.Substring(f + r.Length) End If f = f + r.Length Else f = f + 1 End If Loop Else s = strsource End If Return s End Function Public Shared Function isdigit(ByVal ds As String) As Boolean Dim e As Double If ds <> "" Then If ds.Substring(ds.Length - 1, 1) = "+" Or ds.Substring(ds.Length - 1, 1) = "-" Or ds.Substring(0, 1) = "+" Or ds.Substring(0, 1) = "-" Then Return False Else Try e = CDbl(ds) Return True Catch Return False Finally End Try End If End If End Function
*续 Public Shared Function isdigitS(ByVal s As String, ByVal n As Integer) As Boolean If n > 1 Then If n > 2 Then If isdigit(s.Substring(0, n - 1)) And (s.Substring(n - 1, 1).ToLower = "e") Then Return True ElseIf isdigit(s.Substring(0, n - 1)) And (s.Substring(n - 1, 1).ToLower = ".") Then Return True ElseIf isdigit(s.Substring(0, n - 2)) And (s.Substring(n - 2, 2).ToLower = "e-") Then Return True ElseIf isdigit(s.Substring(n - 1, 1)) Then Return True Else Return False End If Else If isdigit(s.Substring(0, 1)) And s.Substring(1, 1).ToLower = "e" Then Return True ElseIf isdigit(s) Then Return True ElseIf isdigit(s.Substring(0, 1)) And s.Substring(1, 1).ToLower = "." Then Return True Else Return False End If End If Else If isdigit(s.Substring(0, 1)) Then Return True Else Return False End If End If End Function Public Shared Function isop(ByVal dop As String) As Boolean If Not isdigit(dop) Then If dop = "+" Then Return True ElseIf dop = "-" Then Return True ElseIf dop = "*" Then Return True ElseIf dop = "/" Then Return True ElseIf dop = "^" Then Return True Else Return False End If Else Return False End If End Function Public Shared Function isfun(ByVal df As String) As Boolean If Not isdigit(df) Then If Not isop(df) Then Return True Else Return False End If Else Return False End If End Function Public Shared Function overop(ByVal o1 As String, ByVal o2 As String) As Boolean If o1 = o2 Then Return False ElseIf o2 = "^" Then Return True ElseIf o1 = "^" Then Return False ElseIf (o1 = "+" Or o1 = "-") And (o2 = "*" Or o2 = "/") Then Return True ElseIf (o1 = "*" Or o1 = "/") And (o2 = "+" Or o2 = "-") Then Return False ElseIf (o1 = "+" And o2 = "-") Or (o1 = "-" And o2 = "+") Then Return False ElseIf (o1 = "*" And o2 = "/") Or (o1 = "/" And o2 = "*") Then Return False End If End Function
*续 Public Shared Function over(ByVal o1 As String, ByVal o2 As String) As Boolean If o1 = "#" And Not (o2 = "#") Then Return True ElseIf Not (o1 = "#") And o2 = "#" Then Return True ElseIf o1 = "#" And o2 = "#" Then Return True ElseIf isop(o1) And isop(o2) Then Return overop(o1, o2) ElseIf isfun(o1) And o2 = "(" Then Return True ElseIf o1 = "(" And o2 = ")" Then Return False ElseIf o1 = "(" And isfun(o2) Then Return True ElseIf o1 = "(" And o2 = "(" Then Return True ElseIf o1 = o2 Then Return False ElseIf Not (o1 = "(") And o2 = "(" Then Return True ElseIf o1 = "(" And Not (o2 = "(") Then Return True ElseIf Not (o1 = ")") And o2 = ")" Then Return False ElseIf isop(o1) And isfun(o2) Then Return True End If End Function Public Shared Function read(ByVal s As String) As String() Dim c(2) As String Dim b As Boolean Dim n, k As Short k = 1 n = 0 If s.Trim <> "" Then If s.Substring(0, 1) = "(" Then c(0) = "k" c(1) = "(" c(2) = s.Substring(1) Return c ElseIf isop(s.Substring(0, 1)) Then c(0) = "op" c(1) = s.Substring(0, 1) c(2) = s.Substring(1) Return c ElseIf s.Substring(0, 1) = ")" Then c(0) = "fk" c(1) = ")" c(2) = s.Substring(1) Return c ElseIf s.Substring(0, 1) = "#" Then c(0) = "#" c(1) = "#" c(2) = s.Substring(1) Return c Else n = 0 Do While (n <= s.Length) And ((isdigitS(s, k) Or (isdigit(s.Substring(0, k))))) ' Do While (n <= s.Length) And isdigit(s.Substring(0, k)) n = n + 1 If n >= s.Length Then k = s.Length Else k = n End If Loop If n > 1 Then c(0) = "digit" c(1) = s.Substring(0, n - 1) c(2) = s.Substring(n - 1) Return c Else If isop(s.Substring(0, 1)) Then c(0) = "op" c(1) = s.Substring(0, 1) c(2) = s.Substring(1) Return c ' ElseIf s.Substring(0, 1) = "(" Then ' c(0) = "k" ' c(1) = "(" ' c(2) = s.Substring(1) ' Return c ' ElseIf s.Substring(0, 1) = ")" Then ' c(0) = "fk" ' c(1) = ")" ' c(2) = s.Substring(1) ' Return c Else n = 0 k = 0 Dim t As Boolean = True Do While t If k < s.Length Then t = (n < s.Length) And (Not (isdigit(s.Substring(k, 1)))) And (Not (isop(s.Substring(k, 1))) And (Not (s.Substring(k, 1) = "("))) Else t = False End If n = n + 1 If n < s.Length Then k = n Else k = 1 End If Loop If n < s.Length Then c(0) = "fun" c(1) = s.Substring(0, n - 1) c(2) = s.Substring(n - 1) Return c Else c(0) = "fun" c(1) = s c(2) = "" Return c End If End If End If End If End If End Function Public Shared Function func(ByVal fname As String, ByVal x As String) As String Dim s As String Dim r As Double r = CDbl(x) Select Case fname.ToLower Case "ctg" Try r = Math.Cos(r) / Math.Sin(r) s = CStr(r) Catch s = "000000" End Try Case "sh" r = (Math.Exp(r) + Math.Exp(-r)) / 2 s = CStr(r) Case "ch" r = (Math.Exp(r) - Math.Exp(-r)) / 2 s = CStr(r) Case "th" r = (Math.Exp(r) - Math.Exp(-r)) / (Math.Exp(r) + Math.Exp(-r)) s = CStr(r) Case "cth" Try r = (Math.Exp(r) + Math.Exp(-x)) / (Math.Exp(r) - Math.Exp(-r)) s = CStr(r) Catch s = "000000" End Try Case Else s = "000000" End Select Return s End Function
2,从最底下的儿子往上取parent.text,添加到数据库
3,clear
4,倒入到treeview
Private i, j, k As Integer
Public Shared Function replace(ByVal strsource As String, ByVal r As String, ByVal b As String) As String
Dim f As Integer
Dim s As String
f = 0
s = strsource.ToLower
If s.Length > r.Length Then
Do While f <= s.Length - r.Length
If s.Substring(f, r.Length) = r Then
If f = 0 Then
s = b + s.Substring(r.Length)
ElseIf f >= 1 Then
s = s.Substring(0, f - 0) + b + s.Substring(f + r.Length)
End If
f = f + r.Length
Else
f = f + 1
End If
Loop
Else
s = strsource
End If
Return s
End Function
Public Shared Function isdigit(ByVal ds As String) As Boolean
Dim e As Double
If ds <> "" Then
If ds.Substring(ds.Length - 1, 1) = "+" Or ds.Substring(ds.Length - 1, 1) = "-" Or ds.Substring(0, 1) = "+" Or ds.Substring(0, 1) = "-" Then
Return False
Else
Try
e = CDbl(ds)
Return True
Catch
Return False
Finally
End Try
End If
End If
End Function
Public Shared Function isdigitS(ByVal s As String, ByVal n As Integer) As Boolean
If n > 1 Then
If n > 2 Then
If isdigit(s.Substring(0, n - 1)) And (s.Substring(n - 1, 1).ToLower = "e") Then
Return True
ElseIf isdigit(s.Substring(0, n - 1)) And (s.Substring(n - 1, 1).ToLower = ".") Then
Return True
ElseIf isdigit(s.Substring(0, n - 2)) And (s.Substring(n - 2, 2).ToLower = "e-") Then
Return True
ElseIf isdigit(s.Substring(n - 1, 1)) Then
Return True
Else
Return False
End If Else
If isdigit(s.Substring(0, 1)) And s.Substring(1, 1).ToLower = "e" Then
Return True
ElseIf isdigit(s) Then
Return True
ElseIf isdigit(s.Substring(0, 1)) And s.Substring(1, 1).ToLower = "." Then
Return True
Else
Return False
End If
End If
Else
If isdigit(s.Substring(0, 1)) Then
Return True
Else
Return False
End If
End If
End Function
Public Shared Function isop(ByVal dop As String) As Boolean
If Not isdigit(dop) Then
If dop = "+" Then
Return True
ElseIf dop = "-" Then
Return True
ElseIf dop = "*" Then
Return True
ElseIf dop = "/" Then
Return True
ElseIf dop = "^" Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Shared Function isfun(ByVal df As String) As Boolean
If Not isdigit(df) Then
If Not isop(df) Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Shared Function overop(ByVal o1 As String, ByVal o2 As String) As Boolean
If o1 = o2 Then
Return False
ElseIf o2 = "^" Then
Return True
ElseIf o1 = "^" Then
Return False
ElseIf (o1 = "+" Or o1 = "-") And (o2 = "*" Or o2 = "/") Then
Return True
ElseIf (o1 = "*" Or o1 = "/") And (o2 = "+" Or o2 = "-") Then
Return False
ElseIf (o1 = "+" And o2 = "-") Or (o1 = "-" And o2 = "+") Then
Return False
ElseIf (o1 = "*" And o2 = "/") Or (o1 = "/" And o2 = "*") Then
Return False
End If
End Function
Public Shared Function over(ByVal o1 As String, ByVal o2 As String) As Boolean
If o1 = "#" And Not (o2 = "#") Then
Return True
ElseIf Not (o1 = "#") And o2 = "#" Then
Return True
ElseIf o1 = "#" And o2 = "#" Then
Return True
ElseIf isop(o1) And isop(o2) Then
Return overop(o1, o2)
ElseIf isfun(o1) And o2 = "(" Then
Return True
ElseIf o1 = "(" And o2 = ")" Then
Return False
ElseIf o1 = "(" And isfun(o2) Then
Return True
ElseIf o1 = "(" And o2 = "(" Then
Return True
ElseIf o1 = o2 Then
Return False
ElseIf Not (o1 = "(") And o2 = "(" Then
Return True
ElseIf o1 = "(" And Not (o2 = "(") Then
Return True
ElseIf Not (o1 = ")") And o2 = ")" Then
Return False
ElseIf isop(o1) And isfun(o2) Then
Return True
End If
End Function
Public Shared Function read(ByVal s As String) As String()
Dim c(2) As String
Dim b As Boolean
Dim n, k As Short
k = 1
n = 0
If s.Trim <> "" Then
If s.Substring(0, 1) = "(" Then
c(0) = "k"
c(1) = "("
c(2) = s.Substring(1)
Return c
ElseIf isop(s.Substring(0, 1)) Then
c(0) = "op"
c(1) = s.Substring(0, 1)
c(2) = s.Substring(1)
Return c
ElseIf s.Substring(0, 1) = ")" Then
c(0) = "fk"
c(1) = ")"
c(2) = s.Substring(1)
Return c
ElseIf s.Substring(0, 1) = "#" Then
c(0) = "#"
c(1) = "#"
c(2) = s.Substring(1)
Return c
Else
n = 0
Do While (n <= s.Length) And ((isdigitS(s, k) Or (isdigit(s.Substring(0, k)))))
' Do While (n <= s.Length) And isdigit(s.Substring(0, k))
n = n + 1
If n >= s.Length Then
k = s.Length
Else
k = n
End If
Loop
If n > 1 Then
c(0) = "digit"
c(1) = s.Substring(0, n - 1)
c(2) = s.Substring(n - 1)
Return c
Else
If isop(s.Substring(0, 1)) Then
c(0) = "op"
c(1) = s.Substring(0, 1)
c(2) = s.Substring(1)
Return c
' ElseIf s.Substring(0, 1) = "(" Then
' c(0) = "k"
' c(1) = "("
' c(2) = s.Substring(1)
' Return c
' ElseIf s.Substring(0, 1) = ")" Then
' c(0) = "fk"
' c(1) = ")"
' c(2) = s.Substring(1)
' Return c
Else
n = 0
k = 0
Dim t As Boolean = True
Do While t
If k < s.Length Then
t = (n < s.Length) And (Not (isdigit(s.Substring(k, 1)))) And (Not (isop(s.Substring(k, 1))) And (Not (s.Substring(k, 1) = "(")))
Else
t = False
End If
n = n + 1
If n < s.Length Then
k = n
Else
k = 1
End If
Loop
If n < s.Length Then
c(0) = "fun"
c(1) = s.Substring(0, n - 1)
c(2) = s.Substring(n - 1)
Return c
Else
c(0) = "fun"
c(1) = s
c(2) = ""
Return c
End If
End If
End If
End If
End If
End Function
Public Shared Function func(ByVal fname As String, ByVal x As String) As String
Dim s As String
Dim r As Double
r = CDbl(x)
Select Case fname.ToLower
Case "ctg"
Try
r = Math.Cos(r) / Math.Sin(r)
s = CStr(r)
Catch
s = "000000"
End Try
Case "sh"
r = (Math.Exp(r) + Math.Exp(-r)) / 2
s = CStr(r)
Case "ch"
r = (Math.Exp(r) - Math.Exp(-r)) / 2
s = CStr(r)
Case "th"
r = (Math.Exp(r) - Math.Exp(-r)) / (Math.Exp(r) + Math.Exp(-r))
s = CStr(r)
Case "cth"
Try
r = (Math.Exp(r) + Math.Exp(-x)) / (Math.Exp(r) - Math.Exp(-r))
s = CStr(r)
Catch
s = "000000"
End Try
Case Else
s = "000000"
End Select
Return s
End Function