C/Objective C/C#2016.10.17 15:24

파일의 전체 경로를 가져왔을 때 파일명,확장자경로디렉토리등을 따로 분리해서 사용하고 싶을 때가 있습니다.

 

 저도 파일을 다루기 위해 파일명을 따로 분리해야 되고 확장자가 무엇이냐에 따라 별로 처리를 해야 됩니다일일이 문자를 쪼개서 구분하는 것이 아니라 Path 클래스로 간단하게 추출이 가능합니다.

 

1. 파일명을 추출하고 싶을 때

 

1
2
3
// 파일 명을 추출합니다.
string filepath = @"D:\다운로드\POP\Survive You.mp3";
Console.WriteLine(Path.GetFileName(filepath));
1
결과 : “Survive You.mp3”

 

2. 파일의 확장자를 가져오고 싶을 때


1
2
3
// . 을 포함한 확장자를 가져오고 싶을때
string filepath = @"D:\다운로드\POP\Survive You.mp3";
Console.WriteLine(Path.GetExtension(filepath));
1
결과 : “.mp3”

 

3. 파일의 확장자를 제외한 파일명을 가져오고 싶을 때


1
2
3
// 확장자가 없는 파일명을 가져오고 싶을때
string filepath = @"D:\다운로드\POP\Survive You.mp3";
Console.WriteLine(Path.GetFileNameWithoutExtension(filepath));
1
결과 : “Survive You”

 

4. 파일을 제외한 경로명만 가져오고 싶을때


1
2
3
// 파일을 제외한 경로명만 가져올때
string filepath = @"D:\다운로드\POP\Survive You.mp3";
Console.WriteLine(Path.GetDirectoryName(filepath));
1
결과 : “D:\다운로드\POP”

 

5. 파일과 경로를 합치고 싶을 때

 

 파일과 경로를 분리해 놓고 다시 합치고 싶을 때 Path.Combine() 함수를 사용하시면 됩니다문자열을 합쳐도 되겠지만 Combine 을 사용하면 합칠 때 경로의 구분자인 역슬레쉬를 안넣어도 자동으로 알아서 추가해 줍니다.

 

1
2
3
4
// 파일을 제외한 경로명만 가져올때
string filepath = @"D:\다운로드\POP\Survive You.mp3";
Console.WriteLine(Path.Combine("D:\\다운로드\\POP", "Survive You.mp3"));
Console.WriteLine(Path.Combine("D:\\다운로드\\POP\\", "Survive You.mp3"));
1
2
결과 : “D:\다운로드\POP\Survive You.mp3”
      “D:\다운로드\POP\Survive You.mp3”


출처 : http://mainia.tistory.com/2349

저작자 표시
신고
Posted by Namseungil
C/Objective C/C#2012.06.12 14:49

ㅁ 이벤트란?

이벤트를 쉽게 정의하자면 '우리 프로그램에 상관없게 발생한 일이지만, 우리 프로그램에서 그냥은 잘 알 수 없는 일들'쯤 되겠다.

예를 들어서 마우스를 움직였다거나, 키본드를 눌렀다거나 우리 프로그램 창의 크기를 변경하였다거나(가장자리에서 드래그 하여서) 하는 일들이다.

재미있는 사실을 하나 알려주자면, 버튼을 클릭하는 것도 이벤트다. 우리가 '폼 디자인화면'에서 버튼을 더블클릭해주면, '버튼을 클릭하였을 때 해줄 일'에 관하여 소스를 작성할 수 있는데, 이것은 버튼의 이벤트 중의 하나인 Click으로 'Microsoft Visual Studio'가 자동으로 연결을 해주기 때문이다.

이렇게 기본적으로 '폼 디자인화면'에서 '더블클릭'을 통해 자동으로 할 수 있는 것들외의 이벤트들은 속상 창에서 '이벤트 아이콘'(노란 번개 모양의 아이콘)을 클릭하여 수동으로 다 처리해줄 수 있다.

그림판 예제1)

20072686namseungil_ex02.exe

정답)

20072686namseungil_ex02(MouseEvent4).zip

신고
Posted by Namseungil
C/Objective C/C#2012.06.12 14:41

- 메뉴와 버튼

메뉴와 버튼은 기능상으론 아무런 차이점이 없다고 해도 과언이 아니다. 프로그램이 간단하다면, 버튼으로 다 만들어주는 것이 한 눈에 보기도 쉽고 편리하다. 하지만, 버튼이 20~50개씩 된다면, 그건 또 다른 이야기가 된다. 이럴 때 사용할 수 있는 것이 메뉴다. 메뉴는 공간을 거의 차지하지 않는다는 장점이 있다. 메뉴 안에 50개의 기능을 넣어도 메뉴는 메뉴일 뿐.

메모장 예제1)

20072686namseungil_ex01.exe

정답)

20072686남승일_11주차.zip

신고
Posted by Namseungil
C/Objective C/C#2012.06.12 14:35

- C#에서의 몇가지 공용컨트롤에 대해서 알아보자.

ㅁ 콤보박스

윈도에서 사용되는 것으로, 사용자가 직접 정보를 입력하거나 나열된 항목들 중에서 하나의 항목을 선택하여 정보를 입력할 수 있는 컨트롤.

ㅁ 라디오버튼

윈도나 다이얼로그 박스의 선택 영역에서 어느 하나를 선택 또는 취소하기 위해 사용하는 버튼. 선택 버튼과 같은 의미로 사용되며, 일련의 선택 사항 중 한 번에 하나씩만 선택하게 되어 있다. 반면, 또 다른 선택 수단인 체크 박스는 동시에 여러 개를 선택할 때 사용된다.

ㅁ 리스트박스

윈도 상의 응용 프로그램에 갖춰진 파일 등을 일람하는 윈도.

ㅁ 텍스트박스

리스트박스와 거의 동일하며 차이점이라면, '글자를 많이 적을 때'는 텍스트박스를 사용한다.

예제1)

7단원 혼자해보기 2번.exe

예제2)

7단원 혼자해보기 1번.exe

예제3)

newP2_ch01_ex02.exe

정답)

예제123.zip

신고
Posted by Namseungil
C/Objective C/C#2012.05.17 22:46

5. 문자열 공백 제거하기

Trim : 문자열 앞, 뒤의 공백을 제거

TrimStart : 문자열 앞의 공백을 제거

TrimEnd : 문자열 뒤의 공백을 제거

▶ 형식 : 문자열변수명.Trim();

사용법 :

string str = " 안녕 이것은. 문자열 자르기. ";

Console.WriteLine(str);
Console.WriteLine(str.Trim());
Console.WriteLine(str.TrimStart());
Console.WriteLine(str.TrimEnd());
 

6. 대소문자 변환하기

ToUpper : 소문자를 대문자로 바꾸어 줍니다.

ToLower : 대문자를 소문자로 바꾸어 줍니다.

▶ 형식 : 문자열변수명 . ToUpper

string str = "Welcome to Korea! ";

Console.WriteLine(str);
Console.WriteLine(str.ToUpper());
Console.WriteLine(str.ToLower());

7. 문자열 추출과 인덱스

Substring 메서드 : 문자열의 일부만 추출

▶ 형식 : 문자열변수명 . Substring( 추출위치 )

-> 위치는 0 부터 시작하며 , (0,3) 은 0문자열부터 3번째 문자열까지 총 4개의 문자열을 추출한다는 뜻입니다.

* 이때 공백도 문자열에 포함됩니다.

string str = "매우 힘든 C# 은 열심히 하면 재밌어요";

Console.WriteLine(str);

// 5번째 문자부터 8 문자 추출
Console.WriteLine(str.Substring(4,8));

// 5번째 이후 문자 모두를 추출
Console.WriteLine(str.Substring(4));

● 문자열의 인덱스를 추출 하는 메서드

indexOf , LastindexOf

-> 해당 문자열위치의 인덱스(번호) 를 추출합니다.

▶ 형식 :

문자열변수명 . IndexOf ("추출할문자열" )

문바열변수명 . LastIndexOf (" 추출할면자열" )

string str = "C# 프로그래밍의 세계! 프로그래밍이 즐거워집니다.";

Console.WriteLine(str);

// 앞에서부터 검색하여 인덱스를 출력
Console.WriteLine("앞쪽의 \"프로그래밍\" 인덱스는 {0}", str.IndexOf("프로그래밍"));
// 뒤에서부터 검색하여 인덱스를 출력
Console.WriteLine("뒤쪽의 \"프로그래밍\" 인덱스는 {0}", str.LastIndexOf("프로그래밍"));

8. 문자열 삭제하기

▶ 형식 :

문자열변수명 . Remove (시작위치인덱스 , 끝날위치인덱스)

Console.WriteLine (문자열변수명 . Remove (5 , 10 )); -> 8번째 부터 11번재까지의 문자열을 삭제

string str = "C# 프로그래밍의 세계! 프로그래밍이 즐거워집니다.";

Console.WriteLine(str);

// 9번째 문자열부터 11개 문자를 삭제하여 출력
Console.WriteLine(str.Remove(8, 11));

9. 문자열 포멧 지정 ( 문자열 추출하여 저장하기 )

-> Format : 여러 값을 조합하여 문자열로 출력하려는 경우에 사용하는 String 클래스의 정적메소드 입니다.

▶ 형식 :

문자열 변수명 = String.Format ("{0}, {1}", str1, str2 ) ; // --> 문자열변수명에 str1,str2 가 저장되어었 습니다.

string str;
string str1 = "365일";
string str2 = "즐거운 C#";
string str3 = "프로그래밍";

// 문자열 포맷을 지정하여 저장
str = String.Format("{0}, {1}, {2}", str1, str2, str3);

Console.WriteLine(str);

 

예제1)

6단원혼자해보기3번.exe

예제2)

 

6단원혼자해보기2번.exe

정답)

 

Desktop (2).zip

 추가자료)

Desktop.zip

 

신고
Posted by Namseungil
C/Objective C/C#2012.05.11 18:39

1차원 배열

C++처럼 [] 연산자를 변수명 뒤에 쓰는 것이 아니라 자료형과 배열 이름 사이에 []를 넣어야 합니다.

예)

int[] data;

data = new int[5];

int[] data = new int[5];

int[] data = new int[5]{10,20,30,40,50};

int[] data = new int[]{10,20,30,40,50};

int[] data = {10,20,30,40,50};

2차원 배열

자료형[,] 배열이름;

예)

int[,] twoArr = new int[5, 5];

int[,] twoArr = new int[,]{{1, 2}, {3,4}, {5, 6}};

3차원 배열

자료형[,,] 배열이름;

int[,,] threeArr = new int[5, 5, 5];

가변 배열

하나의 배열 안에 여러 크기를 갖는 배열

예)

int [][]var = new int[3][];

var[0] = new int[1]; // 1행은 1열 [0,0]

var[1] = new int[2]; // 2행은 2열 [1,0][1,1]

var[2] = new int[3]; // 3행은 3열 [2,0][2,1][2,2]

예제1)

 

과제1_배열출력하기.exe

예제2)

 

과제2_랜덤사용하기.exe

예제3)

 

배열의평균값구하기.exe

예제4)

배열의평균값구하기.exe

정답)

20072686남승일_8주차.zip

 

신고
Posted by Namseungil
C/Objective C/C#2012.05.04 17:36

- 지역 변수의 특징

· 함수 내부에서 선언 되며, 해당 함수 내부에서만 사용이 가능하다.

· 사용 될 당시 스택(stack)에 지역 변수의 공간이 할당되며, 함수가 리턴 되면 공간에서 소멸된다.

· 각 함수마다 같은 이름의 변수를 사용 할 수 있다.

· 초기화를 안할 경우 쓰레기값(garbage value)이 들어 있다.

- 전역 변수의 특징

· 함수 외부에서 선언되어 어떤 함수에서든 사용이 가능하다.

· 컴파일시 기억장소가 할당되어 프로그램이 실행부터 종료시까지 데이터가 존재한다.

· 지역변수와 달리 초기화가 필요없다. (값은 0)

신고
Posted by Namseungil
C/Objective C/C#2012.04.17 00:40
C/Objective C/C#2012.04.10 17:17

C#에는 3가지의 반복문이 있습니다 :

  • for문
  • while문
  • do-while 문

for문은 반복하는 횟수가 정해진 경우에 주로 이용하며,

while문과 do-while 문은 반복 횟수가 정해지지 않고, 조건에 따라 반복이 계속되거나 중단되는 경우에 이용합니다.

while문은 반복조건을 처음부터 따지고,

do-while 문은 반복문을 나중에 따집니다.

for문

for문의 실행순서는 다음과 같습니다:

for(초기문; 조건식; 반복 후 작업) {

..작업문..

}

초기문

for문의 초기문에서는 대개 for문의 조건식에서 사용하는 변수를 초기화 합니다.

초기문의 특징은 다음과 같습니다 :

  • 초기문은 시작할 때 한 번만 수행됩니다.
  • 콤마(,) 로 분리하여 여러 문장을 나열할 수 있습니다.
  • 초기문을 빈 상태로 두어도 됩니다.

조건식

조건식에서는 논리형 변수나 논리 연산만을 사용할 수 있습니다. 조건식의 결과가 true인 경우 반복이 계속되며,

false의 경우에 반복을 종료하고 for문을 벗어 납니다.

for문 내에 있는 작업 문장을 수행하기 전에 조건식이 검사되므로 첫 번째 수행이라도 조건식이 false이면 반복문을 벗어납니다.

*다음과 같이 조건식을 true로 설정하면 무한반복을 합니다.

for (초기문; true; 반복 후 작업) {

..작업문..

}

*다음과 같이 조건식이 비어있는 상태이면, 이는 true로 간주되어 무한 반복을 합니다.

for (초기문; ; 반복 후 작업) {

..작업문..

}

while문

while문의 실행순서는 다음과 같습니다:

while(조건식){

..작업문..

}

조건식

조건식은 for문의 조건식과 동일합니다. true인 경우에 반복이 계속 되며, false인경우에 반복을 종료하고 while문을 벗어난다.

조건식이 없다면, 컴파일 오류가 발생합니다.

while문은 초기문과 반복 후 작업문이 없기 때문에, 조건식에 사용되는 변수는 while문 전에 선언과 초기화가 반드시 되어있어야 합니다.

또한, 반복이 진행되면서 조건식을 false로 만들 수 있도록 설계되어야 합니다.

다음은 while을 문을 사용해 0부터 10까지 출력하는 예제 입니다

int i = 0;

while(i<=10){

i++;

}

do-while문

while문의 실행순서는 다음과 같습니다:

do{

...작업문..

}while(조건식);

조건식

조건식은 for문, while문의 조건식과 동일합니다.

do-while문에서도 조건식이 없으면 컴파일 오류가 발생합니다.

do-while이 다른 반복문과 가장 큰 차이점은 작업문 실행 후 반복 조건을 따지므로 작업문이 최초 한번은 반드시 실행된다는 점입니다.

do-while문에서도 조건식에 사용되는 변수는 do-while문 이전에 선언과 초기화가 반드시 이루어져야 하며,

무한 반복에 빠지지 않기 위해 반복이 진행되는 동안 조건식을 false 로 만들 수 있도록 설계가 되어야 합니다.

다음 예제는 do-while문을 사용해 0부터 9까지 출력하는 예제입니다.

int i = 0;

do{

i++;

}while(i<10);

작업문에서 break문을 만나면 반복문을 벗어나 실행이 진행 됩니다.
신고
Posted by Namseungil
C/Objective C/C#2012.04.02 21:16

티스토리 툴바