본문 바로가기

C#

(39)
정규 표현식 : 쉽게 검색처리를 작성할 수 있다. "서기 XXXX년"이란 문자열을 검색하려면 어떻게 해야 할까? String 클래스에 있는 FindIndex 메서드로 "서기"를 찾고 그 뒤에 숫자가 나오는지를 조사하고 그 다음에 "년"이 나오는지 조사하는 코드를 작성하면 구할 수 있을 것이다. 하지만 조건을 하나하나 코드로 작성해야하는 위 방법은 매우 귀찮다. 이러한 처리를 수행할 때 정규 표현식을 사용하면 매우 쉽게 검색 처리를 작성할 수 있다. 정규 표현식의 예시 [Ss]ource "Source" 또는 "source"을 나타내는 정규 표현식 []는 문자 그룹을 나타낸다. [] 안에 여러 개의 문자를 지정할 수 있다. 위 표현에서는 'S'와 's'중 하나와 일치하는 것을 검색하게 된다. Source|원천 "Source"또는 "원천"을 나타내는 정규 표..
C#에서 특수 폴더의 경로를 구하는 방법 (바탕 화면, 내 문서, Program Files, Windows, 시스템 폴더) Environment.GetFolderPath라는 정적 메서드를 이용하면 ‘바탕 화면’과 같은 특수한 폴더의 경로를 구할 수 있다. Envionment.SpecialFolder는 열거형을 인수로 받는다. //바탕 화면 폴더를 구한다 var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //내 문서 폴더를 구한다 var myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); //프로그램 파일 폴더를 구한다 var programFilesPath = Environment.GetFolderPath(Environment.Specia..
C#에서 파일 경로 이름 처리 1. 경로 이름을 구성 요소로 분할하는 방법 Path 클래스에 있는 정적 메서드를 사용하면 파일 이름을 구성 요소로 분할할 수 있다. var path = @”C:\Program Files\Microsoft Office\Office16\EXCEL.EXE”; //지정한 경로 문자열에서 디렉터리 정보를 반환 //반환된 경로에는 경로의 마지막에 있는 ‘\’가 포함되지 않는다. var directoryName = Path.GetDirectoryName(path); //지정한 경로 문자열에서 파일 이름과 확장자를 반환 var fileName = Path.GetFileName(path); //지정한 경로 문자열의 확장자를 반환 //반환된 경로의 확장자에는 점(.)이 포함된다 var extension = Path.Ge..
C#에서 Directory 처리 (디렉터리 존재 확인, 생성, 삭제, 이동, 이름 수정, 목록, 변경된 시각, 현재 디렉터리) Directory 클래스 또는 DirectoryInfo 클래스를 사용하면 디렉터리를 생성하고 삭제하는 처리와 파일을 열거하는 처리를 수행할 수 있다. Directory 클래스와 DirectoryInfo 클래스는 System.IO 네임스페이스에 소속되어 있다. Directory 클래스와 DirectoryInfo 클래스 중에 어느 것을 사용하든지 디렉터리에 관한 거의 모든 처리를 구현할 수 있다. 이 Directory 클래스와 DirectoryInfo 클래스의 관계는 File 클래스와 FileInfo 클래스의 관계와 같다. 따라서 일반적으로는 인스턴스를 생성하지 않아도 되는 Directory 클래스를 이용하고 이미 DirectoryInfo 객체가 구해진 상태라면 DirectoryInfo 클래스에 있는 메서드..
C#에서 파일 처리 (파일 존재 확인, 삭제, 복사, 이동, 이름 수정, 크기) 파일의 존재를 확인하고 파일을 삭제하고 파일을 이동하고 파일의 크기를 구하는 등의 처리를 수행하려면 System.IO 네임스페이스에 있는 File 클래스나 FileInfo 클래스를 사용한다. 이 두 개의 클래스에 포함된 메서드는 모두 비슷하다. File과 FileInfo 중 어느 쪽을 사용해야 할까? 일반적으로는 인스턴스를 생성할 필요가 없는 File 클래스를 사용하는 것이 좋다. 그러나 언제나 File 클래스를 사용하는 것이 좋은 것만은 아니다. 만약 FileInfo 생성자에서 파일이름을 지정해서 FileInfo 객체를 이미 생성한 상태라면 이 상태에서 File.Delete를 사용할 경우에는 FileInfo 생성자와 File.Delete 메서드의 두 곳에서 파일 이름을 지정해야 하므로 코드가 장황해진다..
C#에서 텍스트 파일 쓰기 (파일 출력) 1. 텍스트 파일에 한 행씩 문자열을 쓰는 방법 System.IO 네임스페이스에 있는 StreamWriter 클래스를 사용하면 텍스트를 파일에 출력할 수 있다. //텍스트 파일에 한 행씩 문자열을 출력한다 var filePath = @"C:\Example.txt"; using (var writer = new SteamWriter(filePath)) { writer.WriteLine(“example 1”); writer.WriteLine(“example 2”); writer.WriteLine(“example 3”); writer.WriteLine(“example 4”); } StreamWriter의 생성자에서 파일 경로를 지정 문자 인코드는 기본 문자코드(UTF-8)가 지정된 것으로 간주된다. 생성자가 호..
C#에서 텍스트 파일 읽기 (파일 입력) 1. 텍스트 파일 한 행씩 읽기 StreamReader 클래스를 사용 using System.IO; ... var filePath = @"C:\Example.txt"; if (File.Exists(filePath)) { //파일을 사용한 후 닫아주기위해 using으로 묶어준다. using(var reader = new StreamReader(filePath, Encoding UTF8)) { //파일의 마지막까지 읽어 들였는지를 EndOfStream 속성을 보고 조사 while (!reader.EndOfStream) { //ReadLine 메서드로 한 행을 읽어 들여 line 변수에 대입 var line = reader.ReadLine(); Console.WriteLIne(line); } } } File...
C#에서 날짜와 시간 처리 (DateTime 객체) 1. DateTime 객체를 생성한다. var dt1 = new DateTime(2021, 8, 24); var dt2 = new DateTime(2021, 8, 24, 10, 24, 20); string 형과 마찬가지로 DateTime 형은 불변 객체이므로 속성값을 수정하는 코드를 작성할 수 없다. 2. 요일을 구하려면 DateTime 구조체에 있는 DayOfWeek 속성을 참조한다. DayOfWeek 속성의 형은 DayOfWeek 열거형이다. 3. 날짜 형식의 문자열을 DateTime 객체로 변환 날짜 형식의 문자열을 DateTime 객체로 변환하려면 DateTime 구조체에 있는 TryParse라는 정적 메서드를 사용한다. TryParse 메서드는 첫 번째 인수에 변환 대상이 되는 날짜 형식의 문자..