VB.Net Tutorial/Data Type/String

Материал из VB Эксперт
Перейти к: навигация, поиск

Catch Exception for String.Substring

public class Test
   public Shared Sub Main
        Dim strCaption As String
        strCaption = "Answer"
        Try
            Console.WriteLine(strCaption.Substring(10, 1))
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try

   End Sub
End class
startIndex cannot be larger than length of string.
Parameter name: startIndex

Change tab to space

Public Class Tester
    Public Shared Sub Main
        Dim tabs As String = "This~is~~a~tabbed~~~string".Replace("~"c, vbTab)
        Dim spaces As String = TabsToSpaces(tabs, 8)
        Dim periods As String = spaces.Replace(" "c, "."c)
        Console.WriteLine(tabs)
        Console.WriteLine(spaces)
        Console.WriteLine(periods)
    End Sub
    Public Shared Function TabsToSpaces(ByVal source As String, ByVal tabSize As Integer) As String
        Dim result As New System.Text.StringBuilder
        Dim counter As Integer
        For counter = 0 To source.Length - 1
            If (source.Chars(counter) = vbTab) Then
                Do
                    result.Append(Space(1))
                Loop Until ((result.Length Mod tabSize) = 0)
            Else
                result.Append(source.Chars(counter))
            End If
        Next counter
        Return result.ToString()
    End Function
End Class
This    is              a       tabbed                  string
This    is              a       tabbed                  string
This....is..............a.......tabbed..................string

Check a Credit card number

" Quote from
"Visual Basic 2005 Cookbook Solutions for VB 2005 Programmers
"by Tim Patrick (Author), John Craig (Author)
"# Publisher: O"Reilly Media, Inc. (September 21, 2006)
"# Language: English
"# ISBN-10: 0596101775
"# ISBN-13: 978-0596101770

Public Class Tester
    Public Shared Sub Main
    
Console.WriteLine(VerifyCreditCard("123123123123123123"))
    End Sub
    Private Shared Function VerifyCreditCard(ByVal cardNumber As String) As Boolean
        " ----- Given a card number, make sure it is valid. This method
        "       uses the Luhn algorithm to verify the number. This routine
        "       assumes that cardNumber contains only digits.
        Dim counter As Integer
        Dim digitTotal As Integer
        Dim holdValue As Integer
        Dim checkDigit As Integer
        Dim calcDigit As Integer
        Dim useCard As String
        " ----- Perform some initial checks.
        useCard = Trim(cardNumber)
        If (IsNumeric(useCard) = False) Then Return False
        " ----- Separate out the last digit, the check digit. For cards with
        "       an odd number of digits, prepend with a zero.
        If ((Len(useCard) Mod 2) <> 0) Then useCard = "0" & useCard
        checkDigit = useCard.Substring(Len(useCard) - 1, 1)
        useCard = useCard.Substring(0, Len(useCard) - 1)
        " ----- Process each digit.
        digitTotal = 0
        For counter = 1 To Len(useCard)
            If ((counter Mod 2) = 1) Then
                " ----- This is an odd digit position. Double the number.
                holdValue = CInt(Mid(useCard, counter, 1)) * 2
                If (holdValue > 9) Then
                    " ----- Break the digits (e.g., 19 becomes 1+9).
                    digitTotal += (holdValue \ 10) + (holdValue - 10)
                Else
                    digitTotal += holdValue
                End If
            Else
                " ----- This is an even digit position. Simply add it.
                digitTotal += CInt(Mid(useCard, counter, 1))
            End If
        Next counter
        " ----- Calculate the 10"s complement of both values.
        calcDigit = 10 - (digitTotal Mod 10)
        If (calcDigit = 10) Then calcDigit = 0
        If (checkDigit = calcDigit) Then Return True Else Return False
    End Function
End Class
False

Copy characters from string1 into character Array

Module Tester
   Sub Main()
      Dim string1 As String
      Dim characterArray As Char()
      Dim i As Integer
      Dim quotes As Char = ChrW(34)
      string1 = "hello there"
      characterArray = New Char(5) {}
      string1.CopyTo(0, characterArray, 0, 5)
      For i = 0 To characterArray.GetUpperBound(0)
         Console.WriteLine(characterArray(i))
      Next
   End Sub " Main
End Module
h
e
l
l
o

Count Vowels

Imports System.IO
public class Test
   public Shared Sub Main
        Console.WriteLine("VOWELS COUNTED: " & CountTheVowels("asdffdsaasdf"))
   End Sub
    Private Shared Function CountTheVowels(ByVal strSomeString As String) As Integer
        Dim intCount As Integer = 1
        Dim intTotal As Integer = 0
        Dim intPosition As Integer
        "Loop through the string and count the vowels.
        Do While intCount <= strSomeString.Length
            intPosition = InStr("aeio", strSomeString.Substring(intCount, 1).ToLower)
            If intPosition > 0 Then
                intTotal += 1
            End If
        Loop
        Return intTotal
    End Function
   
   
End class

Declare String Variable and assign value

Module Module1
    Sub Main()
        Dim EmployeeName As String
        Dim EmployeePhoneNumber As String
        Dim EmployeeSalary As Double
        Dim NumberOfEmployees As Integer
        EmployeeName = "James Bond"
        EmployeePhoneNumber = "555-1212"
        EmployeeSalary = 45.0
        NumberOfEmployees = 1
        Console.WriteLine("Number of employees: " & NumberOfEmployees)
        Console.WriteLine("Employee name: " & EmployeeName)
        Console.WriteLine("Employee phone number: " & EmployeePhoneNumber)
        Console.WriteLine("Employee salary: " & EmployeeSalary)
    End Sub
End Module
Number of employees: 1
Employee name: James Bond
Employee phone number: 555-1212
Employee salary: 45

Demonstrating method GetHashCode of class String

Module Tester
   Sub Main()
      Dim string1 As String = "hello"
      Dim string2 As String = "Hello"
      Console.WriteLine(string1.GetHashCode() )
      Console.WriteLine(string2.GetHashCode())
   End Sub " Main
End Module
-695839
-694847

Demonstrating String class constructors

Module Tester
   Sub Main()
      Dim characterArray As Char()
      Dim quotes As Char = ChrW(34)
      Dim originalString, string1, string2, string3, string4 As String
      characterArray = New Char() {"A"c, "B"c, "C"c, "D"c, "E"c, "F"c, " "c, "G"c, "H"c}
      originalString = "test"
      string1 = originalString
      string2 = New String(characterArray)
      string3 = New String(characterArray, 6, 3)
      string4 = New String("C"c, 5)
      Console.WriteLine(string1) 
      Console.WriteLine("string2 = " & string2 )
      Console.WriteLine("string3 = " & string3 )
      Console.WriteLine("string4 = " & string4 )
   End Sub " Main
End Module
test
string2 = ABCDEF GH
string3 =  GH
string4 = CCCCC

Get string morse code

Public Class Tester
    Public Shared Sub Main
        Dim source As String = "Hello world!"
        Dim characters As String = _
            "~ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,:?"-/"""
        Dim morse() As String = { _
            "?", ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", _
            "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", _
            "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", _
            "-.--", "--..", "-----", ".----", "..---", "...--", _
            "....-", ".....", "-....", "--...", "---..", "----.", _
            ".-.-.-", "--..--", "---...", "..--..", ".----.", _
            "-....-", "-..-.", ".-..-."}
        Dim counter As Integer
        Dim position As Integer
        For counter = 0 To source.Length - 1
            position = characters.IndexOf(Char.ToUpper( _
               source.Chars(counter)))
            If (position < 0) Then position = 0
            Console.Write (source.Substring(counter, 1) & "   ")
            Console.WriteLine(morse(position))
        Next counter
    End Sub

End Class
H   ....
e   .
l   .-..
l   .-..
o   ---
    ?
w   .--
o   ---
r   .-.
l   .-..
d   -..
!   ?

Insert method returns the resulting string

public class Test
   public Shared Sub Main
               Dim s1 As New String("Greeting")
               s1.Insert(4, "sdss")      "DOES NOT CHANGE S1!!!!
               s1 = s1.Insert(8, "s")    "changes Greeting to Greetings
               Console.WriteLine(s1.Length)
               Console.WriteLine(s1)
   End Sub
End class
9
Greetings

Insert sub string by index

Option Strict On
 Imports System
 Class Tester
     Public Shared Sub Main( )
         Dim s1 As String = "abcd"
         Dim s2 As String = "ABCD"
         Dim s3 As String = "AAAAs "
         s3 = s3 & "development"
         Dim s5 As String = String.Copy(s2) "
         Console.WriteLine("s5 copied from s2: {0}", s5)
         Console.WriteLine("String s3 is {0} characters long. ",s5.Length)
         Console.WriteLine("s3: {0}", s3)
         
         " hold the location of provides as an integer
         Dim location As Integer = s3.IndexOf("a")
         
         Dim s10 As String = s3.Insert(location, "u")
         Console.WriteLine("s10: {0}", s10)
     End Sub "Main
 End Class "Tester
s5 copied from s2: ABCD
String s3 is 4 characters long.
s3: AAAAs development
Unhandled Exception: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negativ
e and less than the size of the collection.
Parameter name: startIndex
   at System.String.Insert(Int32 startIndex, String value)
   at Tester.Main()

Join string

Imports System.Collections
public class Test
   public Shared Sub Main
               Dim s() As String = {"one", "two", "three"}              "a string array
               Dim s2 As String
               s2 = s2.Join(", ", s)
               Console.WriteLine(s2)
   End Sub
End class
one, two, three

Make a reference copy

Public Class Tester
    Public Shared Sub Main
        Dim arrayA() As String = {"One", "Two", "Three", "Four", "Five", "Six"}
        Console.WriteLine(Join(arrayA, ","))
        Dim arrayB() As String = {"A", "B", "C", "D", "E", "E", "F", "G", "H"}
        Console.WriteLine(Join(arrayB, ","))
        " ----- Make a reference copy.
        Dim arrayC() As String = arrayA
        Console.WriteLine(Join(arrayC, ","))
    End Sub
End Class
One,Two,Three,Four,Five,Six
A,B,C,D,E,E,F,G,H
One,Two,Three,Four,Five,Six

Read String value from Keyboard

Module Module1
    Sub Main()
        Dim FirstName As String
        Console.Write("Name: ")
        FirstName = Console.ReadLine()
        Console.WriteLine(FirstName)
    End Sub
End Module
Name: name
name

Reverse a string

public class Test
   public Shared Sub Main
        Dim objTS As TimeSpan
        Dim dteStart As Date
        Dim strText As String
        Dim strChar As String
        Dim intChar As Integer
        dteStart = Now()
        strText = "12345678"
        Dim intLen As Integer = Len(strText)
        For intChar = 1 To CInt(intLen / 2)
            strChar = Mid(strText, intChar, 1)
            Mid(strText, intChar, 1) = Mid(strText, intLen - intChar - 1, 1)
            Mid(strText, intLen - intChar - 1) = strChar
        Next
        objTS = Now().Subtract(dteStart)
        Console.WriteLine(objTS.ToString)
        Console.WriteLine(strText)
   End Sub
   
End class
00:00:00
65342178

String.Empty

Option Strict On
Public Module modMain
   Public Sub Main()
       Console.WriteLine(String.Empty)
   End Sub
End Module

String Length property

Module Tester
   Sub Main()
      Dim string1 As String
      Dim characterArray As Char()
      Dim i As Integer
      Dim quotes As Char = ChrW(34)
      string1 = "hello there"
      characterArray = New Char(5) {}
      Console.WriteLine("Length of string1: " & string1.Length)
   End Sub " Main
End Module
Length of string1: 11

String operation timing

Public Class Tester
    Public Shared Sub Main
        Dim content As String = ""
        Dim result As New System.Text.StringBuilder
        Dim counter As Integer
        Dim dateTime1 As Date
        Dim dateTime2 As Date
        Dim dateTime3 As Date
        Dim loopCount As Integer = 15000
        dateTime1 = Now
        For counter = 1 To loopCount
            content &= counter.ToString()
        Next counter
        dateTime2 = Now
        For counter = 1 To loopCount
            result.Append(counter.ToString())
        Next counter
        dateTime3 = Now
        content = String.Format( _
           "First loop took {0:G4} ms, the second took {1:G4} ms.", _
           dateTime2.Subtract(dateTime1).TotalMilliseconds, _
           dateTime3.Subtract(dateTime2).TotalMilliseconds)
        Console.WriteLine(content)
    End Sub
End Class
First loop took 1734 ms, the second took 0 ms.

SubString

Option Strict On
 Imports System
 Class Tester
     Public Shared Sub Main( )
         Dim s1 As String = "One Two Three Four"
         Dim index As Integer
         index = s1.LastIndexOf(" ")
         Dim s2 As String = s1.Substring((index + 1))
         s1 = s1.Substring(0, index)
         index = s1.LastIndexOf(" ")
         Dim s3 As String = s1.Substring((index + 1))
         s1 = s1.Substring(0, index)
         index = s1.LastIndexOf(" ")
         Dim s4 As String = s1.Substring((index + 1))
         s1 = s1.Substring(0, index)
         index = s1.LastIndexOf(" ")
         Dim s5 As String = s1.Substring((index + 1))
         Console.WriteLine("s1: {0}", s1)
         Console.WriteLine("s2: {0}", s2)
         Console.WriteLine("s3: {0}", s3)
         Console.WriteLine("s4: {0}", s4)
         Console.WriteLine("s5: {0}", s5)
     End Sub "Main
 End Class "Tester
s1: One
s2: Four
s3: Three
s4: Two
s5: One

ToString

Public Class Tester
    Public Shared Sub Main
        Dim someInt As Integer = 123
        Dim someDouble As Double = Math.PI
        Dim someString As String = "Testing"
        Dim someDate As Date = #7/4/1776 9:10:11 AM#
        Dim someDecimal As Decimal = 1D / 3D
        Dim result As New System.Text.StringBuilder
        result.Append("someInt.ToString     ")
        result.AppendLine(someInt.ToString())
        result.Append("someDouble.ToString  ")
        result.AppendLine(someDouble.ToString())
        result.Append("someString.ToString  ")
        result.AppendLine(someString.ToString())
        result.Append("someDate.ToString    ")
        result.AppendLine(someDate.ToString())
        result.Append("someDecimal.ToString ")
        result.Append(someDecimal.ToString())
        Console.WriteLine(result.ToString())

    End Sub
End Class
someInt.ToString     123
someDouble.ToString  3.14159265358979
someString.ToString  Testing
someDate.ToString    04/07/1776 9:10:11 AM
someDecimal.ToString 0.3333333333333333333333333333