如何:使用基本字符串操作执行字符串操作

更新:2007 年 11 月

下面的示例使用在基本字符串运算主题中讨论的一些方法来构造一个类,该类执行字符串操纵的方式在现实应用程序中也可以找到。MailToData 类将个人的姓名和地址存储在单独的属性中,并提供了一种将 City、State 和 Zip 字段合并成单个字符串的方法,以便将它们显示给用户。此外,该类允许用户将城市、省/市/自治区和邮政编码信息作为单个字符串输入;应用程序自动分析此单个字符串并将正确的信息输入到相应的属性中。

为简单起见,此示例使用带有命令行接口的控制台应用程序。

示例

Option Explicit
Option Strict

Imports System
Imports System.IO

Class MainClass
    
    Public Shared Sub Main()
        Dim MyData As New MailToData()
        
        Console.Write("Enter Your Name:")
        MyData.Name = Console.ReadLine()
        Console.Write("Enter Your Address:")
        MyData.Address = Console.ReadLine()
        Console.Write("Enter Your City, State, and ZIP Code separated by spaces:")
        MyData.CityStateZip = Console.ReadLine()
        
        
        Console.WriteLine("Name: {0}", MyData.Name)
        Console.WriteLine("Address: {0}", MyData.Address)
        Console.WriteLine("City: {0}", MyData.City)
        Console.WriteLine("State: {0}", MyData.State)
        Console.WriteLine("ZIP Code: {0}", MyData.Zip)
        
        Console.WriteLine("The following address will be used:")
        
        Console.WriteLine(MyData.Address)
        Console.WriteLine(MyData.CityStateZip)
    End Sub
End Class


Public Class MailToData
    Private strName As String = " "
    Private strAddress As String = " "
    Private strCityStateZip As String = " "
    Private strCity As String = " "
    Private strState As String = " "
    Private strZip As String = " "
    
    Public Sub New()

    End Sub
    
    Public Property Name() As String
        Get
            Return strName
        End Get
       Set
            strName = value
        End Set
    End Property 
    
    Public Property Address() As String
        Get
            Return strAddress
        End Get
        Set
            strAddress = value
        End Set
    End Property 
    
    Public Property CityStateZip() As String
        Get
            Return ReturnCityStateZip()
        End Get
        Set
            strCityStateZip = value
            ParseCityStateZip()
        End Set
    End Property
    
    Public Property City() As String
        Get
            Return strCity
        End Get
        Set
            strCity = value
        End Set
    End Property 
    
    Public Property State() As String
        Get
            Return strState
        End Get
        Set
            strState = value
        End Set
    End Property 
    
    Public Property Zip() As String
        Get
            Return strZip
        End Get
        Set
            strZip = value
        End Set
    End Property
    
    Private Sub ParseCityStateZip()
        Dim CityIndex As Integer
        Dim StateIndex As Integer
        ' Check for an exception if the user did not enter spaces between
        ' the elements.

        Try
        
        ' Find index position of the space between
        ' city and state and assign that value to CityIndex.
        CityIndex = strCityStateZip.IndexOf(" ")
        
        ' Initialize the CityArray to the value of the 
        ' index position of of the first white space.
        Dim CityArray(CityIndex) As Char
        
        ' Copy the city to the CityArray.
        strCityStateZip.CopyTo(0, CityArray, 0, CityIndex)
        
        ' Find index position of the space between
        ' state and zip and assign that value to CityIndex.
        StateIndex = strCityStateZip.LastIndexOf(" ")
        
        ' Initialize the StateArray to the length of the state.
        Dim StateArray(StateIndex - CityIndex) As Char
        
        ' Copy the state to the StateArray.
        strCityStateZip.CopyTo(CityIndex, StateArray, 0, StateIndex - CityIndex)
        
        ' Initialize the ZipArray to the length of the zip.
        Dim ZipArray(strCityStateZip.Length - StateIndex) As Char
        
        ' Copy the zip to the ZipArray.
        strCityStateZip.CopyTo(StateIndex, ZipArray, 0, strCityStateZip.Length - StateIndex)
        
        ' Assign city to the value of CityArray.
        strCity = New String(CityArray)
        
        ' Trim white spaces, commas, and so on.
        strCity = strCity.Trim(New Char() {" "c, ","c, ";"c, "-"c, ":"c})
        
        ' Assign state to the value of StateArray.
        strState = New String(StateArray)
        
        ' Trim white spaces, commas, and so on.
        strState = strState.Trim(New Char() {" "c, ","c, ";"c, "-"c, ":"c})

        
        ' Assign zip to the value of ZipArray.
        strZip = New String(ZipArray)
        
        ' Trim white spaces, commas, and so on.
        strZip = strZip.Trim(New Char() {" "c, ","c, ";"c, "-"c, ":"c})

        ' If an exception is encountered, alert the user to enter spaces
        ' between the elements.

        Catch OverflowException As Exception
                Console.WriteLine(ControlChars.Lf + ControlChars.Lf + "You must enter spaces between elements." + ControlChars.Lf + ControlChars.Lf)  
        End Try

    End Sub
    
    Private Function ReturnCityStateZip() As String
        ' Make state uppercase.
        strState = strState.ToUpper()
        
        ' Put the value of city, state, and zip together in the proper manner.
        Dim MyCityStateZip As String = String.Concat(strCity, ", ", strState, " ", strZip)
        
        Return MyCityStateZip
    End Function
End Class
using System;
    
class MainClass
{
    static void Main(string[] args)
    {
        MailToData MyData = new MailToData();

        Console.Write("Enter Your Name:");
        MyData.Name = Console.ReadLine();
        Console.Write("Enter Your Address:");
        MyData.Address = Console.ReadLine();
        Console.Write("Enter Your City, State, and ZIP Code separated by spaces:");
        MyData.CityStateZip = Console.ReadLine();


        Console.WriteLine("Name: {0}", MyData.Name);
        Console.WriteLine("Address: {0}", MyData.Address);
        Console.WriteLine("City: {0}", MyData.City);
        Console.WriteLine("State: {0}", MyData.State);
        Console.WriteLine("Zip: {0}", MyData.Zip);

        Console.WriteLine("The following address will be used:");

        Console.WriteLine(MyData.Address);
        Console.WriteLine(MyData.CityStateZip);
    }
}

public class MailToData
{
    string   name = " ";
    string   address = " "; 
    string  citystatezip = " ";
    string   city = " "; 
    string   state = " "; 
    string   zip = " ";

    public MailToData()
    {
    }

    public string Name
    {
        get{return name;}
        set{name = value;}
    }

    public string Address
    {
        get{return address;}
        set{address = value;}
    }

    public string CityStateZip
    {
        get
        {
            return ReturnCityStateZip();
        }
        set
        {
            citystatezip = value;
            ParseCityStateZip();
        }
    }


    public string City
    {
        get{return city;}
        set{city = value;}
    }

    public string State
    {
        get{return state;}
        set{state = value;}
    }

    public string Zip
   {
        get{return zip;}
        set{zip = value;}
    }

    private void ParseCityStateZip()
    {  
        int CityIndex; 
        int StateIndex;
        // Check for an exception if the user did not enter spaces between
        // the elements.
        try
        {

            // Find index position of the space between
            // city and state and assign that value to CityIndex.
            CityIndex = citystatezip.IndexOf(" ");

            // Initialize the CityArray to the value of the 
            // index position of the first white space.
            char[] CityArray = new char[CityIndex];

            // Copy the city to the CityArray.
            citystatezip.CopyTo(0,CityArray ,0, CityIndex);

            // Find index position of the space between
            // state and zip and assign that value to CityIndex.
            StateIndex = citystatezip.LastIndexOf(" ");
            
            // Initialize the StateArray to the length of the state.
            char[] StateArray = new char[StateIndex - CityIndex];

            // Copy the state to the StateArray.
            citystatezip.CopyTo(CityIndex, StateArray, 0, (StateIndex - CityIndex));

            // Initialize the ZipArray to the length of the zip.
            char[] ZipArray = new char[citystatezip.Length - StateIndex];

            // Copy the zip to the ZipArray.
            citystatezip.CopyTo(StateIndex, ZipArray, 0, (citystatezip.Length - StateIndex));
            
            // Assign city to the value of CityArray.
            city = new String(CityArray);

            // Trim white spaces, commas, and so on.
            city = city.Trim(new char[]{' ', ',', ';', '-', ':'}); 

            // Assign state to the value of StateArray.
            state = new String(StateArray);

            // Trim white spaces, commas, and so on.
            state = state.Trim(new char[]{' ', ',', ';', '-', ':'});
    

            // Assign zip to the value of ZipArray.
            zip = new String(ZipArray);

            // Trim white spaces, commas, and so on.
            zip = zip.Trim(new char[]{' ', ',', ';', '-', ':'});
        }
        // If an exception is encountered, alert the user to enter spaces
        // between the elements.
        catch(OverflowException)
        {
            Console.WriteLine("\n\nYou must enter spaces between elements.\n\n");
        } 
    }

    private string ReturnCityStateZip()
    {
        // Make state uppercase.
        state = state.ToUpper();

        // Put the value of city, state, and zip together in the proper manner.
        string MyCityStateZip = String.Concat(city, ", ", state, " ", zip);
            
        return MyCityStateZip;
    }
}

当执行以上的代码时,将要求用户输入他或她的用户名和地址。应用程序将这些信息放入相应的属性中,并将这些信息回显给用户,同时创建显示城市、省/市/自治区和邮政编码信息的单个字符串。

请参见

其他资源

基本字符串操作