⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strings.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
📖 第 1 页 / 共 3 页
字号:
            End If            If IncludeLeadingDigit = TriState.UseDefault Then                IncludeLeadingDigit = TriState.True            End If            Dim sb As StringBuilder = New StringBuilder            sb.Append("{"c).Append("0"c).Append(":"c)            FormatNumber(sb, Expression, NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits)            If (UseParensForNegativeNumbers = TriState.True) Then                sb.Append(";"c).Append("("c)                FormatNumber(sb, Expression, NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits)                sb.Append(")"c)            End If            sb.Append("}"c)            Return String.Format(sb.ToString, Expression)        End Function        Private Sub FormatNumber(ByVal sb As StringBuilder, ByVal Expression As Object, _                                Optional ByVal NumDigitsAfterDecimal As Integer = -1, _                                Optional ByVal IncludeLeadingDigit As TriState = TriState.UseDefault, _                                Optional ByVal UseParensForNegativeNumbers As TriState = TriState.UseDefault, _                                Optional ByVal GroupDigits As TriState = TriState.UseDefault)            'FIXME : perform more elegant type checking            'Expression = DirectCast(Expression, Double)            If (GroupDigits = TriState.True) Then                sb.Append("#"c).Append(","c).Append("#"c).Append("#"c).Append("#"c)            End If            If (IncludeLeadingDigit = TriState.True) Then                sb.Append("0"c)            End If            sb.Append("."c)            If NumDigitsAfterDecimal = -1 Then                sb.Append("0"c).Append("0"c)            Else                For i As Integer = 1 To NumDigitsAfterDecimal                    sb.Append("0"c)                Next            End If        End Sub        Public Function FormatPercent(ByVal Expression As Object, Optional ByVal NumDigitsAfterDecimal As Integer = -1, _                                            Optional ByVal IncludeLeadingDigit As TriState = TriState.UseDefault, _                                            Optional ByVal UseParensForNegativeNumbers As TriState = TriState.UseDefault, _                                            Optional ByVal GroupDigits As TriState = TriState.UseDefault) As String            'FIXME : should throw IllegalCastException            'Expression = CDbl(Expression)            If (NumDigitsAfterDecimal < -1) Then                Throw New ArgumentException("Argument 'NumDigitsAfterDecimal' is Invalid")            End If            Try                If TypeOf Expression Is String Then                    Dim tmpstr2 As String = CStr(Expression)                    Convert.ToDouble(tmpstr2)                End If            Catch ex As Exception                Throw New InvalidCastException(" Cast from String to type 'Double' is not valid.")            End Try            If Not ((TypeOf Expression Is Short) Or (TypeOf Expression Is Integer) Or (TypeOf Expression Is Long) _                Or (TypeOf Expression Is Decimal) Or (TypeOf Expression Is Single) Or (TypeOf Expression Is Double) _                Or (TypeOf Expression Is Byte)) Then                Throw New InvalidCastException(" Cast to type 'Currency' is not valid.")            End If            ' FIXME : what affects default values            If UseParensForNegativeNumbers = TriState.UseDefault Then                UseParensForNegativeNumbers = TriState.False            End If            If GroupDigits = TriState.UseDefault Then                GroupDigits = TriState.True            End If            If IncludeLeadingDigit = TriState.UseDefault Then                IncludeLeadingDigit = TriState.True            End If            Dim sb As StringBuilder = New StringBuilder            sb.Append("{"c).Append("0"c).Append(":"c)            FormatPercent(sb, Expression, NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits)            If (UseParensForNegativeNumbers = TriState.True) Then                sb.Append(";"c).Append("("c)                FormatPercent(sb, Expression, NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits)                sb.Append(")"c)            End If            sb.Append("}"c)            Return String.Format(sb.ToString, Expression)        End Function        Private Sub FormatPercent(ByVal sb As StringBuilder, ByVal Expression As Object, ByVal NumDigitsAfterDecimal As Integer, _                                            ByVal IncludeLeadingDigit As TriState, ByVal UseParensForNegativeNumbers As TriState, _                                            ByVal GroupDigits As TriState)            'FIXME : use NumberFormatInfo.PercentNegativePattern and NumberFormatInfo.PercentPositivePattern            Dim percentChar As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.PercentSymbol            FormatNumber(sb, Expression, NumDigitsAfterDecimal, IncludeLeadingDigit, UseParensForNegativeNumbers, GroupDigits)            sb.Append(percentChar)        End Sub        Public Function GetChar(ByVal Str As String, ByVal Index As Integer) As Char            If Str Is Nothing Then                Throw New ArgumentException("Length of argument 'String' must be greater than zero.")            End If            If Index < 1 Then                Throw New ArgumentException("Argument 'Index' must be greater than or equal to 1.")            End If            If Index > Str.Length Then                Throw New ArgumentException("Argument 'Index' must be less than or equal to the length of argument 'String'.")            End If            Return Str.Chars(Index - 1)        End Function        Public Function InStr(ByVal Start As Integer, ByVal String1 As String, ByVal String2 As String, _                                <OptionCompare()> Optional ByVal Compare As Microsoft.VisualBasic.CompareMethod = 0) As Integer            If Start < 1 Then                Throw New ArgumentException("Argument 'Start' must be greater or equal to zero.")            End If            If String1 Is Nothing Then                Return 0            End If            If String1.Length = 0 Then                Return 0            End If            If String2 Is Nothing Then                Return Start            End If            If String2.Length = 0 Then                Return Start            End If            If Start > String1.Length Then                Return 0            End If            If Compare = CompareMethod.Text Then                String1 = String1.ToLower()                String2 = String2.ToLower()            End If            Dim i As Integer = String1.IndexOf(String2, Start - 1)            Return i + 1        End Function        Public Function InStr(ByVal String1 As String, ByVal String2 As String, _                               <OptionCompare()> Optional ByVal Compare As Microsoft.VisualBasic.CompareMethod = 0) As Integer            Return InStr(1, String1, String2, Compare)        End Function        Public Function InStrRev(ByVal StringCheck As String, ByVal StringMatch As String, _                                        Optional ByVal Start As Integer = -1, _                                        <OptionCompare()> Optional ByVal Compare As Microsoft.VisualBasic.CompareMethod = 0) As Integer            If Start = 0 Or Start < -1 Then                Throw New ArgumentException("Argument 'Start' must be greater than 0 or equal to -1.")            End If            If StringCheck Is Nothing Then                Return 0            End If            If StringCheck.Length = 0 Then                Return 0            End If            If StringMatch Is Nothing Then                Return Start            End If            If StringMatch.Length = 0 Then                Return Start            End If            If Start > StringCheck.Length Then                Return 0            End If            If Start = -1 Then                Start = StringCheck.Length            End If            If Compare = CompareMethod.Text Then                StringMatch = StringMatch.ToLower()                StringCheck = StringCheck.ToLower()            End If            Dim i As Integer = StringCheck.LastIndexOf(StringMatch, Start - 1, Start)            Return i + 1        End Function        Public Function Join(ByVal SourceArray() As Object, Optional ByVal Delimiter As String = " ") As String            Dim i As Integer            Dim sb As StringBuilder = New StringBuilder            If (SourceArray Is Nothing)  Then                Return Nothing            End If            If (SourceArray.Length = 0)  Then                Return Nothing            End If            If TypeOf SourceArray(0) Is Array Then                Throw New ArgumentException("Procedure call or argument is not valid")            End If            If SourceArray.Rank > 1 Then                Throw New ArgumentException("Argument 'SourceArray' cannot be converted to type 'String'")            End If            For i = 0 To SourceArray.Length - 2                sb.Append(CStr(SourceArray(i)))                If Not Delimiter Is Nothing Then                    sb.Append(Delimiter)                End If            Next            sb.Append((SourceArray(i)))            Return sb.ToString()        End Function        Public Function Join(ByVal SourceArray() As String, Optional ByVal Delimiter As String = " ") As String            Dim oarr() As Object            oarr = SourceArray            Return Join(oarr, Delimiter)        End Function        Public Function LCase(ByVal Value As Char) As Char            Return Char.ToLower(Value)        End Function        Public Function LCase(ByVal Value As String) As String            If Value Is Nothing Then                Return Nothing            End If            Return Value.ToLower()        End Function        Public Function Left(ByVal Str As String, ByVal Length As Integer) As String            If Length < 0 Then                Throw New ArgumentException("Argument 'Length' must be greater or equal to zero.")            End If            If Str Is Nothing Or Length = 0 Then                Return String.Empty            End If            If Length > Str.Length Then                Length = Str.Length            End If            Return Str.Substring(0, Length)        End Function        Public Function Len(ByVal Expression As Boolean) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Byte) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Char) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Double) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Integer) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Long) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Object) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Short) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Single) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As String) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As DateTime) As Integer            Return GetSize(Expression)        End Function        Public Function Len(ByVal Expression As Decimal) As Integer            Return GetSize(Expression)        End Function        Private Function GetSize(ByVal Expression As Object) As Integer            If Expression Is Nothing Then                Return 0            End If            Dim Tcode As TypeCode = Type.GetTypeCode(Expression.GetType())            Select Case Tcode                Case TypeCode.Boolean                    Return 2                Case TypeCode.Byte                    Return 1                Case TypeCode.Char                    Return 2                Case TypeCode.DateTime                    Return 8                Case TypeCode.DBNull                    Throw New InvalidCastException                Case TypeCode.Decimal                    Return 8                Case TypeCode.Double                    Return 8                Case TypeCode.Empty                    Return 0                Case TypeCode.Int16                    Return 2                Case TypeCode.Int32                    Return 4                Case TypeCode.Int64                    Return 8                Case TypeCode.Object                    Throw New InvalidCastException                Case TypeCode.SByte                    Return 1                Case TypeCode.Single                    Return 4                Case TypeCode.String                    Return CStr(Expression).Length                Case TypeCode.UInt16                    Return 2                Case TypeCode.UInt32                    Return 4                Case TypeCode.UInt64                    Return 8            End Select        End Function        Public Function LSet(ByVal Source As String, ByVal Length As Integer) As String            If Source Is Nothing Then                Source = String.Empty            End If            If Source.Length >= Length Then                Return Source.Substring(0, Length)            Else                Return Source.PadRight(Length)            End If        End Function        Public Function LTrim(ByVal Str As String) As String            If Str Is Nothing Then                Return String.Empty            End If            Dim carr() As Char = {" "c}            Return Str.TrimStart(carr)        End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -