string s = "Zbcdefg";

string str = new String(s.ToCharArray().OrderByDescending(x => x).ToArray());

Console.WriteLine(str);

 

결과값 : gfedcbZ

============================================

string s = "gfedcbZ";

string str = new String(s.ToCharArray().OrderBy (x => x).ToArray());

Console.WriteLine(str);

 

결과값 : Zbcdefg

 

참고 및 출처 : scalability.tistory.com/28

어디서든 쓸수있는 DeepCopy 클래스

아 이번에 자꾸 어디서 알수없는 래퍼런스 자료구조가 자꾸 바뀌어서 딥카피로 해결했다

딥카피만세

1
2
3
4
5
6
7
8
9
10
11
12
13
public class StaticDeepCopy
{
    public static T DeepClone<T>(T obj)
    {
        using (var ms = new MemoryStream())
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            return (T)formatter.Deserialize(ms);
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

예제는 다음과 같다. 걍 쓰면됌

Dictionary<string, WatchNode> temp = new Dictionary<string, WatchNode>();

Dictionary<string, WatchNode> deepCopy = StaticDeepCopy.DeepClone(temp);

이렇게 하면 값은 같지만 메모리적으로 temp 와 deepCopy는 전혀 다르당. 

 

아, 단점은 딥카피 하고싶은 자료구조마다 Serializable을 해야된다는것..

1
2
3
4
5
    [Serializable]
    public class WatchNode
    {
        public string test;
    }
 

이런식으로 클래스 위에 Serializable을 해주어야 포멧팅 시리얼라이징이 된다.

C# Stopwatch 로 코드 시간재기


1
2
3
4
5
6
7
8
9
//using namespace : using System.Diagnostics;
 
Stopwatch sw = new Stopwatch();
sw.Start();
 
//do work 
 
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds + "ms");
cs


C#에 내장되어있는 Stopwatch를 이용하여 work 시간을 잽니다.

[DataContract], [DataMember] 사용 네임 스페이스


1. 해당 프로젝트의 참조 > 참조추가 > 어셈블리 > 프레임워크


System.Runtime.Serialization 을 추가


2. using 추가


using System.Runtime.Serialization; 입력

Log4Net 사용 방법 - 파일편



1. Log4Net dll 다운받기


다운받을 수 있는 아래 그림으로 이동할 수 있는 URL : https://logging.apache.org/log4net/download_log4net.cgi

가급적이면 newKey로 다운받아달라고 써있다. newKey의 zip으로 다운받자.


위의 파일을 다운로드 받아서 압축을 풀고, 아래의 경로로 가서 보면 다음과 같이 여러 버전의 dll 파일이 있다. 원하는 파일을 복사해서 참조하기 쉬운 위치로 가져다 놓자. 

나의 경우는, .net 의 4.0 버전을 쓰기 위해서 다음과 같은 경로로 접근하였으며, 해당 파일을 내가 쓰려는 프로젝트 폴더에 옮겨두었다.



종류 확인을 위해 찍었다.


2. 참조 추가


해당 프로젝트의 참조 오른쪽 버튼 클릭 >  참조 추가 



찾아보기를 클릭하여 log4net.dll 을 참조한다.



참조에 log4net이 생성된것을 확인할 수 있다.


3. App.config 에 명령어 추가


꼭 App.cofig 파일에 명령어를 추가해야되는 의무는 없다. 새로 xml파일을 만들어 명령어를 주어도 된다. 하지만 설정 관련 부분에서 App.config 파일에서 설정하는 모든 설정은 생성한 명령어가 있는 xml 파일에 적용해줘야 한다. (경로지정 및 속성 지정 등)



위의 명령어 텍스트: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0"?>
<configuration>
    <configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
    </configSections>
<!-- 파일 appender-->
  <log4net>
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value=".\TestLog.log"/>
    <appendToFile value="true"/>
    <datePattern value="-yyyy-MM-dd"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value ="10"/>
    <maximumFileSize value ="10MB"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c - %m%n"/>
    </layout>
  </appender>
 
  <root>
    <level value="DEBUG"/>
    <appender-ref ref="RollingFile"/>
  </root>
  </log4net>
  
<connectionStrings>
        <add name="vtsprogram.Properties.Settings.testConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\test.MDB" providerName="System.Data.OleDb"/>
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
</configuration>
 
cs



속성 설명:

file: 파일명 및 경로

datePattern: 날짜 작성 방식

maxSizeRollBackups: 백업 파일 개수 제한 (맥스 파일 갯수가 넘어가면 전의 파일이 삭제됨)

maximumFileSize : 백업 파일의 크기 제한

layoutconversionPattern: 로그에 쓰이는 문구 셋팅

rootlevel: value값 이상의 로그 레벨을 씀

rootappender-ref ref=”해당값”: 해당값의 appender name을 찾아 실행함. 속성을 설정한 appender의 이름과 반드시 동일해야 한다.



4. App.config 파일에 속성 변경


App.config 파일 속성 > 출력 디렉토리로 복사 > 항상 복사 로 설정

만약, App.config 파일이 아닌 다른 파일에 명령어를 입력했다면, 그 명령어를 입력한 파일의 속성을 변경해야 한다.





5. 사용할 클래스에서 Log4Net 라이브러리 연결 및 설정방법


using 을 이용하여 log4Net을 연결한다.

두번째 빨간박스인 assembly는 맨 처음 프로그램을 시작할때 딱 한번만 실행해 주면 된다.

xmlConfigurator을 이용하여 명령어를 추가한 파일을 연결해준다. (본 예제에서는 App.config 파일이지만, 다른 파일에 명령어를 입력했다면, 입력한 파일을 연결해야 한다.)

ILog 인터페이스를 이용하여 로그 인스턴스를 호출하고 사용한다.



예제 텍스트 : 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using log4net;
using log4net.Config;
[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
namespace vtsprogram
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            XmlConfigurator.Configure(new System.IO.FileInfo("App.config"));
            InitializeComponent();
            ILog log = LogManager.GetLogger(typeof(MainWindow));
            //LogTest();
 
            log.Debug("LogTest() started");
            log.Info("My Info");
            log.Warn("My Warning");
            log.Error("My Error");
            log.Fatal("My Fatal Error");
        }
 
cs


여기까지 완료하면, App.config 파일에서 설정해주었던 경로로 파일이 떨궈지고, 

App.config 에 작성한 명령어 중 conversionPattern 에서 정의했던 대로 문자열이 파일에 작성된다.


다음은 로그 파일을 읽어오는 방법이다.

로그 파일을 읽어올 때에는 텍스트 파일을 읽어오는 방법으로 하면 될 것 같다.


conversionPattern 에 문자열을 정의할 때, 나만의 구분자를 주어서, 나중에 로그를 읽을 때 구분자를 이용하여 문자열을 자르는 방법으로 정리해도 괜찮을 것 같다.


6. 로그 읽기


예제 소스 : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public void LogRead()
        {
            int counter = 0;
            string line;
 
            // Read the file and display it line by line.  
            System.IO.StreamReader file =
                new System.IO.StreamReader(@".\TestLog.log");
            while ((line = file.ReadLine()) != null)
            {
                System.Console.WriteLine(line);
                counter++;
            }
 
            file.Close();
            System.Console.WriteLine("There were {0} lines.", counter);
            // Suspend the screen.  
            System.Console.ReadLine();
        }
 
cs


string path = null;


OpenFileDialog ofd = new OpenFileDialog();

ofd.Filter = "Excel files (*.xls,*xlsx)|*.xls;*xlsx|All files (*.*)|*.*"; //필터는 변경 가능

if (ofd.ShowDialog() == DialogResult.Cancel)

{

return; //취소했을때 함수 종료 (함수가 void일 경우에 해당)

}


path 에는 선택한 경로가 들어있다. D의 test.txt 파일을 선택했다면, path 에는 "D:\\test.txt" 가 입력되어 있을 것이다.


==MSDN 본문 중==


각 필터링 옵션에 대 한 필터 문자열에는 세로줄 필터에 대 한 설명을 포함 막대 (|) 및 필터 패턴입니다. 다양 한 필터링 옵션에 대 한 문자열 세로 막대로 구분 됩니다.

다음은 필터 문자열의 예입니다.

Text files (*.txt)|*.txt|All files (*.*)|*.*

예를 들어 파일 형식 세미콜론으로 구분 하 여 필터에 여러 필터 패턴을 추가할 수 있습니다.

Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*

사용 하 여 FilterIndex 사용자에 게 첫 번째는 필터링 옵션을 설정 하는 속성만 표시 됩니다.


MSDN 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
 
    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;
 
    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        try
        {
            if ((myStream = openFileDialog1.OpenFile()) != null)
            {
                using (myStream)
                {
                    // Insert code to read the stream here.
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
        }
    }
}

c


위의 내용 링크 : https://msdn.microsoft.com/ko-kr/library/system.windows.forms.filedialog.filter(v=vs.110).aspx

Cursor.Current = Cursors.Default;              // 일반 화살표

Cursor.Current = Cursors.WaitCursor;         // 똥글뱅이 돌아가는 동그라미 커서


예시)


작업 준비

Cursor.Current = Cursors.WaitCursor; //이 시점부터 마우스가 똥글뱅이로 변함


작업시작

작업중..


.

.


작업끝

Cursor.Current = Cursors.Default;     //이 시점부터 마우스가 일반 화살표 모양으로 변함


256이 넘는 상수값을 헥사값으로 표현하기


1
2
int tmep = 1310;
byte[] intBytes = BitConverter.GetBytes(temp);
cs


결과 : intByte[0] = 30 / intByte[1] = 5


5와 30(1E)를 합치면 51E가 되어 즉, 1310이 나오게 된다.

순서 주의하여 써야함!!


그냥 쓰고싶으면 Reverse를 이용하면 됨!(아래 참고)

1
2
3
4
int intValue;
byte[] intBytes = BitConverter.GetBytes(intValue);
Array.Reverse(intBytes);
byte[] result = intBytes;

cs


내 생각인데.. result는 딱히 없어도 될것 같다.. 충분히 intBytes에서 바뀌어있을거같은뎅


먼저, Serializable을 이용하여 직렬화 구조체를 만든다.


1
2
3
4
5
6
[Serializable()]
public struct COMBO_LIST
{
    public int a;
    public int b;
}
cs

나는 이런식으로 만들었다.


데이터를 저장하는 부분의 소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void button1_Click(object sender, EventArgs e)
{
    List<COMBO_LIST> list = new List<COMBO_LIST>();
    COMBO_LIST combolist = new COMBO_LIST();
    combolist.a = 1;
    combolist.b = 2;
    list.Add(combolist);
    combolist.a = 3;
    combolist.b = 4;
    list.Add(combolist);
 
    FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
 
    BinaryFormatter formatter = new BinaryFormatter();
    try
    {
        formatter.Serialize(fs, list);
    }
    catch
    {
        Console.WriteLine("실패!!!!");
        throw;
    }
    finally
    {
        fs.Close();
    }
}
cs

파일을 열어 새로운 저장공간에 저장하는 부분의 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
private void button2_Click(object sender, EventArgs e)
{
    List<COMBO_LIST> list = new List<COMBO_LIST>();
    COMBO_LIST combolist = new COMBO_LIST();
 
    FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
    try
    {
        BinaryFormatter formatter = new BinaryFormatter();
        list = (List<COMBO_LIST>)formatter.Deserialize(fs);
    }
    catch
    {
        Console.WriteLine("실패!!!!!!!열기");
        throw;
    }
    finally
    {
        fs.Close();
    }
 
    int cnt = list.Count;
    for (int i = 0; i < cnt; i++)
    {
        //데이터 차례로 담기.
        Console.WriteLine("{0} and {1}", list.ElementAt(i).a, list.ElementAt(i).b);
    }
}
 
//결과 : 1 and 2
//       3 and 4
cs


참고사이트 : http://thismoments.tistory.com/58

http://honestgame.tistory.com/37

double 소수점 n째 자리까지 나타내기


본 예제는 4째자리까지 나타내는 예제


1
2
3
4
5
6
double itemp = 23040;
itemp * 0.001;
string str_temp = itemp.ToString("F4", CultureInfo.InvariantCulture);
 
//결과 : 23.0400
//CultureInfo는 Globalization을 선언해야 된다.
cs


CultureInfo 는 치다보면 아래 파란색 줄 눌러서 나오는(using 선언) Globalization을 추가하면 사용 가능하다.

'프로그래밍 > C#' 카테고리의 다른 글

C# int to hex(byte)  (0) 2017.06.15
C# 리스트를 파일(dat)로 저장하기  (0) 2017.06.09
C# 컨트롤 - 원치않는 포커스 없애기  (0) 2017.05.29
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26

텍스트박스 textbox 커서 없애기

버튼 포커스 없애기


원치 않는 포커스가 있을 경우, 컨트롤 속성에 가서



TapStop 을 false로 바꿔주면 된다.

'프로그래밍 > C#' 카테고리의 다른 글

C# 리스트를 파일(dat)로 저장하기  (0) 2017.06.09
C# double 소수점 n째 자리까지 나타내기  (0) 2017.06.08
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
C# 바이트 파일 저장  (0) 2017.05.26

TextBox 개행이 \n 으로 되지 않는다. 이럴 경우엔 다음과 같은 방법을 사용하면 된다


1. \n 대신 \r\n 을 쓴다.

또는,

2. \n 대신 Environment.NewLine 을 쓴다.


ex)


1
tb.Text += Environment.NewLine;
cs



출처 : http://akangels-textcube.blogspot.kr/2009/12/c-textbox-%EC%A4%84%EB%B0%94%EA%BE%B8%EA%B8%B0.html

바이트 파일 읽기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void Btn_byteOpen_Click(object sender, EventArgs e)
{
    byte[] byte_load = new byte[256];
    //파일오픈창 생성 및 설정
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Title = "파일 열기";
    ofd.Filter = "텍스트 문서 | *.txt| 모든 파일 (*.*) | *.*";
 
    DialogResult dr = ofd.ShowDialog();
    string str = null;
    //OK버튼 클릭시
    if (dr == DialogResult.OK)
    {
        byte_load = File.ReadAllBytes(ofd.FileName);
    }
}
cs


'프로그래밍 > C#' 카테고리의 다른 글

C# 컨트롤 - 원치않는 포커스 없애기  (0) 2017.05.29
C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 저장  (0) 2017.05.26
C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24

바이트를 파일로 저장하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void Btn_byteSave_Click(object sender, EventArgs e)
{
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.Filter = "텍스트 문서|*.txt";
    saveFileDialog1.Title = "저장하기";
    DialogResult dr = saveFileDialog1.ShowDialog();
 
    if (dr == DialogResult.OK)
    {
        if (saveFileDialog1.FileName != "")
{
            string dir = saveFileDialog1.FileName; //경로 + 파일명
            FileStream file = new FileStream(dir, FileMode.Create);
            file.Write(testBuf1, 0, testBuf1.Length);
            file.Close();
        }
    }
}


cs


'프로그래밍 > C#' 카테고리의 다른 글

C# TextBox 엔터 개행  (0) 2017.05.29
C# 바이트 파일 읽기  (0) 2017.05.26
C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static void Main(string[] args)
{
        //
        // TODO: 여기에 응용 프로그램을 시작하는 코드를 추가합니다.
        string str = "가나다"
        char[] charArray = str.ToCharArray(); 
        Console.WriteLine("Char Array"); 
//        for(int i=0;i<charArray.Length;i++) 
//                Console.WriteLine((int)charArray[i]); 
        foreachchar a in charArray )
                Console.WriteLine("{0}", (int)a);
 
Console.WriteLine(); 
 
byte[] byteArray = System.Text.ASCIIEncoding.Default.GetBytes(str); 
         
Console.WriteLine("Byte Array"); 
//        for(int i=0;i<byteArray.Length;i++) 
//                Console.WriteLine(byteArray[i]); 
        foreachchar a in byteArray )
                Console.WriteLine("{0}", (int)a);
}
cs



출처 : http://www.hoons.net/board/cshaptip/content/419


'프로그래밍 > C#' 카테고리의 다른 글

C# 바이트 파일 읽기  (0) 2017.05.26
C# 바이트 파일 저장  (0) 2017.05.26
C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22

텍스트파일 읽어와서 헥사로 저장하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
            string read = null;
            //파일오픈창 생성 및 설정
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "파일 열기";
            //ofd.FileName = "test";
            ofd.Filter = "텍스트 문서 | *.txt| 모든 파일 (*.*) | *.*";
 
            //파일 오픈창 로드
            DialogResult dr = ofd.ShowDialog();
             string str = null;
            //OK버튼 클릭시
            if (dr == DialogResult.OK)
            {
                StreamReader sr = new StreamReader(ofd.FileName);
 
                label6.Text = "";
                while (sr.Peek() >= 0)
                {
                    str = sr.ReadLine().ToString(); //엔터친부분 찾아서 나눠 읽어옴
                    read += str; //한줄로 모으기
                    
                }
                string[] temp = read.Split('\x020'); // 공백 없애기
                for (int i = 0; i < 256; i++)
                {
                    int value = Convert.ToInt32(temp[i], 16);
                    readByte[i] = (byte)value;
                }
                AllDataPrint(readByte, label6);
                testBuf2 = readByte;
            }
            //취소버튼 클릭시 또는 ESC키로 파일창을 종료 했을경우
            else if (dr == DialogResult.Cancel)
            {
                //return "";
            }
 
//testBuf2 는 byte[] 256크기임
//readByte도 byte[] 256크기임
//testbuf2를 이용하여 작업하려고 최종 바이트를 담아놓는 역할을 한 
cs



1
2
3
4
byte hex = 112;
textBox.Text = string.Format("hex : {0:X2} \r\n", hex);
 
//결과 : hex : 70
cs


0:X2를 이용하면 헥사값이 바로 나옴!

'프로그래밍 > C#' 카테고리의 다른 글

C# 한글을 ASCII 값의 byte 로 변환  (0) 2017.05.25
C# string to hex  (0) 2017.05.24
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22
C# 문자열 자르기 substring / Trim  (0) 2017.04.20
C# 소문자 대문자 변환  (0) 2017.04.20

C# 보안 액세스 거부 문제


가끔 C# 개발을 하다보면 액세스가 거부될 때가 있다. 이 부분의 문제는 거의 보면 접근권한의 문제인 것 같다. 본인의 프로젝트의 권한을 높이기 위해선 다음과 같이 설정해주고, 프로그램을 껏다가 키면 잘 해결된다. 적어도 나의 경우는 그렇다!!!


1. 프로젝트 오른쪽 클릭 > 속성에 들어간다.



보안 탭에서 위와 같이 설정한다. clickOne 보안 설정 사용을 체크하고, 완전 신뢰 응용 프로그램을 체크하면, 솔루션 탐색기에서 manifest 파일이 하나 튀어나온다.


2. manifest 설정해주기



위와 같이 level을 requireAdministrator로 바꿔준다. 위의 주석은 3가지 접근 권한 단계인 것 같다. requireAdministraror도 충분한 권한을 가지고 있으니 위의 주석에서 가져와 붙여넣기를 해준다. 

(사진을 클릭하시면 크게 볼 수 있습니다.)


그리고 마지막으로, manifest를 다시 숨겨주면 된다. 숨기는 방법은 위의 ClickOne보안 설정 사용을 다시 해제해 주면 된다.



그리고 마지막으로 다시빌드를 해주자!



'프로그래밍 > C#' 카테고리의 다른 글

C# string to hex  (0) 2017.05.24
C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 문자열 자르기 substring / Trim  (0) 2017.04.20
C# 소문자 대문자 변환  (0) 2017.04.20
C# 폼과 폼간의 객체 사용  (0) 2017.04.19

1. substring(시작위치, 살릴 문자열 갯수)


1
2
3
4
string str = "1a2b3c";
 
Console.WriteLine(str.substring(2,3));
//결과 : 2b3  2부터 3개 살림(0부터 세는 것)

cs


2. substring(시작위치)


1
2
3
4
string str = "1a2b3c";
 
Console.WriteLine(str.substring(3));
//결과 : b3c (3번째부터 끝까지 다 가져오는것)
cs


출처 : http://ikasu.tistory.com/26


3. Trim()


1
2
3
4
string str = "      1a2b3c";
 
Console.WriteLine(str.Trim());
//결과 :1a2b3c (공백삭제)
cs


출처 : http://infodbbase.tistory.com/96

'프로그래밍 > C#' 카테고리의 다른 글

C# byte를 헥사값으로 출력  (0) 2017.05.22
C# 보안 액세스 거부 문제 해결  (2) 2017.05.22
C# 소문자 대문자 변환  (0) 2017.04.20
C# 폼과 폼간의 객체 사용  (0) 2017.04.19
C# 엔터를 이용하여 로그인하기  (0) 2017.04.13
1
2
3
4
5
6
7
string str = "abcd"
 
str.ToUpper();
//결과 : ABCD
 
str.ToLower();
//결과 : abcd
cs


숫자랑 섞여있어도, 알파벳을 찾아내어 대문자 또는 소문자로 다 알아서 바꿔준다.

'프로그래밍 > C#' 카테고리의 다른 글

C# 보안 액세스 거부 문제 해결  (2) 2017.05.22
C# 문자열 자르기 substring / Trim  (0) 2017.04.20
C# 폼과 폼간의 객체 사용  (0) 2017.04.19
C# 엔터를 이용하여 로그인하기  (0) 2017.04.13
C# string to uint  (0) 2017.04.03

+ Recent posts