방법: 기본적인 문자열 작업을 통해 문자열 조작 수행
업데이트: 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;
}
}
위 코드를 실행하면 이름과 주소를 입력하라는 메시지가 표시됩니다. 응용 프로그램에서는 정보를 적절한 속성에 저장하고 도시, 주 및 우편 번호 정보를 단일 문자열로 만들어 사용자에게 다시 표시합니다.