프로그래밍언어/VB.NET

문자열 변수 vb.net 기초

부산딸랑이 2013. 1. 24. 06:26

출처 : http://blog.naver.com/jspark916/30019747350

vbNet에서는 문자열 변수를 쉽게 활용하기 위한 여러 기능이 들어 있다.

이들 기능중의 주요한 것들을 익혀두자.

이런 기능이 초보시절에는 중요한 것 같지 않아도 나중에 실제 프로그램을 만들다 보면

이런 기능이 있다는 것을 깜박 잊고 별도로 코드를 만들어 처리하는 경우가 왕왕 있으므로

외우지는 않더라도 있다는 것은 기억해 두는 것이 좋다.

여기에 없는 기능이 더 있지만 나중에 필요한 때 설명하기로 한다.

아래와 같이 변수가 선언되어 있다고 하자.

이하 예제에서 코드만 정리해 두었으므로 결과를 알고 싶으면 TextBox1으로 출력해 보시기를.

Dim S1, S2, S3, Ans As String
Dim N1, N2 As Integer

S1 = "대한민국"
S2 = "Korea"
S3 = "대한민국 Republic Of Korea"

[예제1] 문자열의 길이 알아내기
N1 = S1.Length
N2 = S2.Length

N1 = 4, N2 = 5가 된다.

한글이나 영문 관계없이 모두 1글자로 인식한다.

또는 [ N1 = Len(S1) ] 처럼 내장 함수를 이용하여 문자열의 길이를 알아낼 수도 있다.

[예제2] 특정 위치에 있는 문자를 알아내기
TextBox3.Text = S1.Chars(2)
( )안의 숫자는 문자의 위치값이다.

맨처음 문자의 위치값은 [0]이다. 따라서 위 코드의 결과는 [민]이 된다.

[예제3] 텍스트 박스에 있는 내용을 모두 지운다.
다음중 어느 한 방법에 의해 문자열 변수나 텍스트박스의 내용을 지울 수 있다.

TextBox1.Text = ""
TextBox1.Text = Nothing
TextBox1.Text = String.Empty
TextBox1.Text = S1.Empty

[예제4] 두 문자열을 비교하여 같으면 [True], 다르면 [False]값을 돌려 준다.


TextBox1.Text = S1.Equals(S2)
이 경우 S1과 S2를 비교(대소문자를 다른 것으로 구별)한다.

TextBox1.Text = S1.Equals(S2, S3)
S1은 별 의미가 없고 S2와 S3를 비교하고 있다. 이런 코드는 아래와 같은 코드로 사용하는 것이 바람직하다.
TextBox1.Text = String.Equals(S2, S3)

[예제5] 두개의 문자열을 비교하여 같으면 [0], 다르면 [1]의 값을 돌려 준다.


대소문자를 구별하여 비교한다.
N1 = String.Compare(S1, S2)
N1 = String.Compare(S1, S2, False)

대소문자를 구별하지 않는다.
N1 = String.Compare(S1, S2, True)

두 문자열의 일부가 같은지를 비교하는 경우
N1 = String.Compare(S1, 0, S3, 2, 4)


S1의 첫번째 문자부터, S3의 3번째 문자부터 4글자를 비교한다.

즉 [대한민국]과 [민국 R]을 비교하고 있으므로 결과는 [1]이 된다.

대소문자를 구별하지 않으려면 아래와 같이 하면 된다.
N1 = String.Compare(S1, 0, S3, 0, 4, True)

[예제6] 문자열의 앞부분이 "대한"으로 시작하고 있는지를 체크하여

그렇다면 [True] 아니면 [False]의 값을 돌려준다.
TextBox1.Text = S1.StartsWith("대한")

만약 어떤 글자로 끝나고 있는가를 확인하려면
TextBox1.Text = S1.EndsWith("Korea")

[예제7] 특정문자가 있는 위치를 알려준다.


Dim K1 As String = "012H45H78H"
TextBox1.Text = K1.IndexOf("45H")
맨 처음 발견된 위치를 알려준다.

이 코드의 결과는 [4]이다. 만약 이런 문자가 들어 있지 않다면 [-1] 값을 돌려준다.

TextBox1.Text = K1.IndexOf("H", 5)
위치값 5인 문자(여섯번째 문자)부터 찾아본다. 이 코드의 결과는 [6]이다.

Dim CHs() As Char = {"3", "H", "2"}
TextBox1.Text = K1.IndexOfAny(CHs)


3, H, 2 어느 문자든 맨 처음 발견되는 문자의 위치값을 알려준다.

2가 제일 먼저 발견될 것이므로 이 코드의 결과는 [2]가 된다.

[As Char]은 문자로 선언한다는 의미이다.

문자는 1개의 글자를 의미한다.

CHs 같이 여러개의 값들이 모여 이루어진 변수를 배열이라고 한다.

위와 같이 배열을 선언 하는 것은 아래처럼 선언하는 방법을 간이화 한 방식이다.

Dim CHs(2) As Char
CHs(0) = "3" : CHs(1) = "H" : CHs(2) = "2"

만약 여기서 "2" 대신 "2KK"등으로 적어 넣었다면 어떻게 될까.

문자로 선언된 변수는 1자만 허용하므로 "2"만을 인식한다.

따라서 결과는 마찬가지이다.

만약 마지막에 발견된 위치를 알고 싶다면

[IndexOf]나 [IndexOfAny] 대신 [LastIndexOf]나 [LastIndexOfAny]를 사용하면 된다.

[예제8] 특정 위치의 문자를 알려준다.
TextBox1.Text = S1.Substring(1) '... 1번 글자부터 끝까지. 결과는 [한민국]
TextBox1.Text = S1.Substring(1, 2) '... 1번 글자부터 두글자. 결과는 [한민]

또는 옛 vb6에 있던 변수를 사용하여
TextBox1.Text = Mid(S1, 2, 2) '... 둘째 글자부터 두글자. 결과는 [한민]
Right, Left함수는 폼에서는 이미 다른 용도로 사용되고 있기 때문에 사용할 수 없다.

[예제9] 특정위치에 문자를 삽입한다.
TextBox1.Text = S1.Insert(2, "의 조") '... 결과는 [대한의 조민국]

[예제10] 특정위치부터 특정갯수의 문자를 제거한다.
TextBox1.Text = S1.Remove(1, 2) '... 결과는 [대국]

[예제11] 문자열중 일부내용을 다른 내용으로 바꾼다.
TextBox1.Text = S1.Replace("대한", "중화") '... 결과는 [중화민국]

물론 실제 프로그램에서는 아래처럼 사용되는 것이 일반적임을 노파심으로 적어둔다.


Dim OldTx, NewTx As String
OldTx = "대한" : NewTx = "중화"
TextBox1.Text = S1.Replace(OldTx, NewTx)

[예제12] 문자열의 길이를 10자로 만들고 10자가 안되는 나머지는 빈칸으로 채운다.

빈칸은 왼쪽에 채운다.
TextBox1.Text = S1.PadLeft(10) '... 결과는 빈칸이 왼쪽에 6개 추가 되어 [ 대한민국]
TextBox1.Text = S1.PadLeft(10, "+") '... 결과는 [+]가 왼쪽에 6개 추가 되어 [++++++대한민국]

오른쪽에 채우려면 [PadRight]를 사용하면 된다.

[예제13] 문자열의 앞, 뒤 또는 앞뒤모두의 공백을 없앤다.


Dim Px As String = " Korea "
TextBox1.Text = Px.TrimStart '... 결과는 [Korea ]
TextBox1.Text = Px.TrimEnd '... 결과는 [ Korea]
TextBox1.Text = Px.Trim '... 결과는 [Korea]

또는 아래와 같이 내장함수를 이용하여 코드를 만들어도 된다.
TextBox1.Text = LTrim(Px) '... = Px.TrimStart
TextBox1.Text = RTrim(Px) '... = Px.TrimEnd
TextBox1.Text = Trim(Px) '... =Px.Trim

[예제14] 문자열을 대문자 또는 소문자로 바꾼다.


Dim Px As String = "Korea"
TextBox1.Text = Px.ToLower '... 결과는 [korea]
TextBox1.Text = Px.ToUpper '... 결과는 [KOREA]

[예제15] 문자열끼리 더하기
문자열 끼리 더하는 경우에는 [&]연산자를 사용하면 되는데

아래 세 경우 모두 같은 결과를 얻는 코딩 방법이다.

각 케이스마다 경우에 따라 요긴하게 적용된다.

[Case1]
Ans = S1 & S2 & S3

[Case2]
Ans = S1
Ans = Ans & S2
Ans = Ans & S3

[Case3]
Ans = S1
Ans &= S2
Ans &= S3

 

'프로그래밍언어 > VB.NET' 카테고리의 다른 글

정규식정리  (0) 2013.01.26
textbox  (0) 2013.01.24
16↔32컬러만 바로 변경  (0) 2013.01.24
Html소스 받아오기  (0) 2013.01.24
정규식 MatchCollection 클래스  (0) 2013.01.24