728x90
0. 강의 목표
- Visual Studio 상에서 Project 생성 후 String과 관련된 여러 함수들을 적용시켜 그 결과를 화면에 표시
- 앞쪽은 UI 그리는 내용 / 뒤쪽은 그 안에 들어가는 프로그램을 짜는 내용
1. Visual Studio Project 생성
- Create a new project -> Windows Forms App (.NET Framework) 선택 후 이름 입력하여 Project 생성
- Project 생성 직후 아래와 같은 창이 표시됨
- 위 창에 Text를 하나 집어넣고 그를 제어하는 것이 목표
2. Control 추가
- 좌측의 'ToolBox' 클릭 후 Common Controls -> Label 선택
- 이렇게 ToolBox에서 Form 상으로 끌어와 사용할 수 있는 요소들을 'Control' 이라 함
2.1 Control Property 변경
- 우측 하단의 Properties 클릭 후 Text를 "Sample, Test, Text"로 변경
- Button 추가
- Button을 누르면 어떤 동작을 하게 됨
- "Run"으로 Text 변경
- 다수의 Label 추가 후 각 이름 지정
- 위 Label은 Data를 담는 껍데기 역할
- 실제 Data를 표시할 Label 추가
- Data를 표시하는 Label의 경우 위의 Design -> Name이 가장 중요
- Name : 해당 Object를 식별하기 위해 Code에서 사용되는 이름
- Text : 단순히 Control의 이름을 표시하는 용도
- 이 Name을 가져와서 해당 Label의 값을 바꾸겠다는 뜻
- 따라서 이 Name을 알아보기 쉽게 지어야 함
- Name을 'lblContain' 으로 변경 후 Text는 아무 것도 없다는 뜻인 '-'로 변경
- 옆의 String에 맞게 각 '-' Label의 Name 설정 후 창 크기 조절
- 프로그램 크기에 맞게 자동으로 가변하게 할 수도 있음
3. 코드 작성
- 위의 'Run' Button을 더블클릭하면 나오는 화면
- 위처럼 한 String에 대해 제어할 수 있는 많은 Method들이 존재함
- 사용자가 생성한 String도 지정 가능
3.1 Button을 누를 시 앞서 생성한 여러 Label들에 위의
String 관련 함수를 대입한 결과를 표시하는 코드 작성
- 즉 위 함수들의 대입을 Button의 Event로써 작성
- Button의 Event는 Button을 더블클릭 했을 경우 발생
3.1.1 Contain()
- 위의 Run Button을 더블클릭 할 경우 lblContain의 Text 값을('-') Contains("Text") 함수의 결과값으로 바꾸는 코드 작성
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Practice_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
... ...
... ...
private void button1_Click(object sender, EventArgs e)
{
string strText = lblText.Text;
lblContain.Text = strText.Contains("Text").ToString();
}
... ...
... ...
}
}
- 만약 위처럼 함수의 반환값(Bool type)을 그대로 String에 대입할 경우 위처럼 오류가 발생함
- 따라서 위처럼 'ToString()' 함수를 통해 Bool type의 반환값을 String으로 변환
- C#에서는 'ToString()'만 붙이면 왠만한 Type은 다 String으로 변환됨
- String으로 변환 이후 위의 'Start'(F5) 버튼을 눌러 실행
- 즉 'Run' Button을 눌렀을 때 "Sample, Test, Text"의 값을 가져와서 Contain을 적용시켜 '-'에 뿌리는 코드 실행
- lblText의 Text "Sample, Test, Text:에는 "Text"라는 String이 포함되어 있으므로 Contains("Text") 함수는 True를 return
- 이후 Bool type의 return값 'True'를 ToString() 함수를 통해 String으로 변환 후 lblContain의 Text에 대입
- '-' -> 'True'로 변경
- Contains 함수의 Parameter 값을 "tmp"로 변경 후 Code 실행 시 lblText의 Text에는 "tmp"가 존재하지 않음
- 따라서 False 값을 반환
3.1.2 Equals(), Length(), Replace()
- Contains()와 유사한 방식으로 lblContain의 Text 값에 각 함수를 대입
- 이후 그 결과값을 String으로 변환하여 관련 Label의 Text에 대입하는 코드 작성
... ...
... ...
private void button1_Click(object sender, EventArgs e)
{
string strText = lblText.Text;
lblContain.Text = strText.Contains("Text").ToString();
lblEquals.Text = strText.Equals("Test").ToString();
lblLength.Text = strText.Length.ToString();
lblReplace.Text = strText.Replace("Text", "I Can").ToString();
}
... ...
... ...
}
}
- Equals() : 괄호 안의 String과 해당 String이 동일한지 여부를 Return
- Length() : 해당 String의 길이를 Return
- Replace(): 해당 String에 포함된 첫번째 인자 String을 두번째 인자의 String으로 대체
- 실행 결과
3.1.3 Split(params char[] separator)
- separator를 기준으로 해당 Sting을 분리함
- Button Event 부분 내에 lblContain의 Text 값을 Split(',') 함수를 통해 ',' 기준으로 나누는 코드 작성
... ...
... ...
private void button1_Click(object sender, EventArgs e)
{
... ...
... ...
string[] strSplit = strText.Split(',');
lblSplit1.Text = strSplit[0].ToString();
lblSplit2.Text = strSplit[1].ToString();
lblSplit3.Text = strSplit[2].ToString();
}
... ...
... ...
}
}
- 'Split' 함수의 경우 한 String을 나누면 여러 String이 나오므로 위처럼 Array에 결과값을 집어넣어야 함
- 실행 결과
3.1.4 Substring(int startindex, int length)
- 해당 String의 startindex번째 index부터 length 길이만큼 잘라내는 함수
lblSubstring.Text = strText.Substring(3, 5).ToString();
- 위처럼 총 17까지인 lblContain의 Text 중 index 3부터 뒤로 5개까지의 index를 분리
- 실행 결과
3.1.5 ToLower(), ToUpper(), Trim()
- ToLower() : 해당 String의 대문자를 모두 소문자로 변환
- ToUpper() : 해당 String의 소문자를 모두 대문자로 변환
- Trim() : 해당 String 내의 공백을 제거
- 아래처럼 해당 String의 전, 후, 전후 모두 중 어디의 공백을 지울지 선택할 수 있음
- 생각보다 자주 쓰이는 함수
3.1.6 전체 코드 실행 결과
- 전체 코드 실행 결과
- 위처럼 함수를 여러개 적용 시킬 수도 있음
- Split() 함수의 결과값에 TrimStart() 함수를 적용시켜 앞부분의 공백을 제거
본 강의의 모든 저작권은 아래 원작자에게 있습니다.
강의 출처 :
https://www.youtube.com/watch?v=boUIc2Y4cZo&list=PLoFFz2j8yxxxH_3ustbHATXtMsHZ-Saei&index=1&t=773s
https://cwkcw.tistory.com/59?category=1001431
'Study_C#' 카테고리의 다른 글
[C#] Invoke, InvokeRequired, Delegate (0) | 2024.07.30 |
---|---|
[C#] Using의 2가지 사용법 (0) | 2024.07.30 |
[C#] 비동기 관련 (0) | 2024.07.06 |
[C#] 자료형 정리 (0) | 2024.07.06 |
Doridori C# 강의 정리 2. Data Type과 Overflow (0) | 2024.05.22 |