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