2013년 8월 30일 금요일

C# String & 정규식




string.Replace(‘원본’,’교체’)
string.Insert(‘Index’, ‘삽입할 데이터’)
string.Substring(‘start_index’, ‘end_index’)
string.StartsWith(‘MachingString’)

{N[,M][:formatString]}
N 0부터 시작하는 인덱스값으로 대치될 인수를 나타낸다.
M 값은 대치될 값이 표시될 자리 수를 나타낸다. 만약 인수의 길이가 이 M 값보다 작으면 공란이 포함되어 표시된다.

   만약 M값을 음수로 지정하면 대치되는 인수는 왼쪽 정렬로 표시되고, 만약 M 값을 양수로 지정하면 오른쪽 정렬로

   표시된다.
formatString 선택 포맷 코드 string이다.

문자형식
C or c  통화
D or d10진법
E or e공학용(지수)
F or f고정 소수점
G or g일반
N or n번호, 이와 비슷한 F는 천 단위마다 컴마가 추가된다.
P or p퍼센트
R or r라운드 트립, string으로 변경된 numeric 타입이 원래의 numeric값으로 원 위치될 수 있게 보장한다. 부동소수점일 때만 지원한다.
X or x



/////////////////////////////////////////////////////////////////////
int i = 123456;
{0:C} : $123456 {0:C5} : $123456.00000
{0:D} : 123456 {0:D5} : 123456
{0:E} : 1.234560E+005 {0:E5} : 1.234560E+005
{0:F} : 123456.00 {0:F5} : 123456.00000
{0:G} : 123456 {0:G5} : 123456
{0:N} : 123,456.00 {0:N5} : 123,456.00000
{0:P} : 12,345,600.00 % {0:P5} : 12,345,600.00 %
{0:X} : 1E240 {0:X5} : 1E240
/////////////////////////////////////////////////////////////////////


형식문자사용 용도설명
00자리 표시자 표시숫자가 형식상 0보다 적은 숫자라면 nonsignificant 0으로 표시
#숫자 자리 표시자 표시파운드 표시(#)를 significant숫자로만 대체
.10진수의 점을 표시마침표 표시
,그룹 구분자1,000처럼 숫자 즈룹을 구분
%퍼센트 표시퍼센트(%) 표시
E+0
E-0
e+0
e-0
지수 표시지수 결과 형식으로 표시
\문자 표시“\n”처럼 전통적인 형식 시퀀스와 함깨 사용
‘ABC’문자 string따옴표나 쌍따옴표 내에 모둔 종류의 string 표시
;부분 구분자숫자값이 양수, 음수, 0에 따라 다른 결과값을 지정


/////////////////////////////////////////////////////////////////////
int i = 123456     
{0:#0}   123456
{0:#0;(#0)}    123456
{0:#0;(#0);<zero>} 123456
{0:#%} 12345600%

int j = -123456   
{0:#0}   -123456
{0:#0;(#0)}    (123456)
{0:#0;(#0);<zero>} (123456)
{0:#%} -12345600%

int x = 0
{0:#0}   0
{0:#0;(#0)}    0
{0:#0;(#0);<zero>} <zero>
{0:#%} %
/////////////////////////////////////////////////////////////////////
StringBuilder
.Replace(‘원본’, ‘교체’)
.Insert(index, ‘data’)
.Append(‘data’)
.AppendFormat(“{0:3}”, ‘data’)
.Remove(start_index, end_index)

정규식
설명
.“\n”이외의 모든 단일 문자를 찾는다.
[characters]목록에서 단일 문자를 찾는다.
[^characters]목록에 없는 단일 문자를 찾는다.
[charX-charY]지정된 범위에서 단일 문자를 찾는다.
\w[a-zA-Z_0-9]와 같은 단어 문자를 찾는다.
\W단어가 아닌 문자를 찾는다.
\s[\n\r\t\f]와 같은 공백 문자를 찾는다.
\S공백이 아닌 문자를 찾는다.
\d[0-9]와 같은 10진수를 찾는다.
\D숫자가 아닌 문자를 찾는다.
^줄 시작
$줄의 마지막
\b단어 경계
\B단어 경계가 아닌 부분
*0개 이상 찾는다.
+1개 이상 찾는다.
?0개나 한 개 찾는다.
{n}정확히 n개 찾는다.
{n,}최소한 n개인 것을 찾는다.
{n,m}최소 n개 최대 m개인 것을 찾는다.
()일치하는 substring을 캡처한다.
(?<name>)일치하는 substring을 그룹 이름으로 캡처한다.
|논리적 OR


Match
static void Main(string[] args)
{
    Regex r = new Regex(“in”);
    Match m = r.Match(“Matching”);
    if(m.Success)
    {
        Console.WriteLine(“Found ‘{0}’ at position {1}”, m.Value, m.Index);
    }
}


String에 패턴이 여러 번 발생된다면 …
static void Main(string[] args)
{
    Regex r = new Regex(“in”);
    MatchCollection mc = r.Matches(“The King Was in His Counting”);
    for(int i = 0; i < mc.Count; i++)
    {
        Console.WriteLine(“{0}-{1}”, mc[i].Value, mc[i].Index);
    }
}
또는 
static void Main(string[] args)
{
    Regex r = new Regex(“in”);
    string str = “The King Was in His Counting”;
    Match m;
    for(m = r.Match(str); m.Success; m = m.NextMatch())
    {
        Console.WriteLine(“{0}-{1}”, mc.Value, mc.Index);
    }
}
여러 패턴의 인스턴스에 대한 일치 : Regex r = new Regex(“((an)|(in)|(on))”);
여러 패턴의 인스턴스에 대한 일치 : Regex r = new Regex(“Gr(a|e)y”);

Groups
Group클래스는 그룹과 일치하는 하나의 정규식 결과를 표시한다.Match클래스는 GroupCollection 객체를 반환하는 Groups 프로퍼티를 제공한다.
static void Main(string[] args)
{
    Regex r = new Regex(“(i(n))g”);
    string str = “The King Was in His Counting”;
    Match m = r.Match(str);
    GroupCollection gc = m.Groups;

    for(int i = 0; i < gc.Count; i++)
    {
        Group g = gc.[i];
        Console.WriteLine(“Found ‘{0}’ at position {1}”, g.Value, g.Index);
    }
}
Group
Regex q = new Regex(“(?<something>\\w+):(?<anogher>\\w+)”);
Match n = q.Match(“Salary:123456”);
Console.WriteLIne(“{0} = {1}”, n.Groups[“something”].Value, n.Groups[“another”].Value);

//?<another>\\w+ 일치하는 substring을 단어문자만 ‘another’이라는 그룹에 캡처한다.

Captures
msdn.microsoft.com/ko-kr/library/system.text.regularexpressions.capture(VS.95).aspx
.Replace(“string”, “pattern”, “change_string”)
string s = “trailing “;
string e = @”\s+$”;
string r = Regex.Replace(s, e, “”);
>

댓글 없음:

댓글 쓰기