Поделиться через


Практическое руководство. Выполнение действия со строками с помощью основных строковых операций

Обновлен: Ноябрь 2007

В следующем примере некоторые методы, описанные в разделе Основные операции со строками, используются для создания класса, который выполняет обработку строк так же, как это происходит в реальном приложении. Класс 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;
    }
}

При выполнении предыдущего кода пользователю предлагается ввести его имя и адрес. Приложение размещает сведения в соответствующих свойствах и отображает их для пользователя, создавая одну строку, в которой представлены сведения о городе, области и почтовом индексе.

См. также

Другие ресурсы

Основные операции со строками