... | ... | @@ -2537,52 +2537,50 @@ var cmd = ExtractString("exec APP.COMMON.SET(NID=PN000101,CMD='ED-SYS::::1')", " |
|
|
>
|
|
|
|
|
|
``` c#
|
|
|
class ExtractStringProgram
|
|
|
static class ExtractStringProgram
|
|
|
{
|
|
|
public static string ExtractString(string source, string beginDelim, string endDelim)
|
|
|
public static string ExtractString(this string source, string beginDelim, string endDelim)
|
|
|
{
|
|
|
bool isBeginDelimExisting = false; //beginDelim의 존재 여부 나타내는 변수
|
|
|
bool isEndDelimExisting = false; //endDelim의 존재 여부 나타내는 변수
|
|
|
//source가 ""면 바로 끝.
|
|
|
if (source == "") return "source가 \"\"";
|
|
|
|
|
|
int indexOfBeginDelim = 0; //beginDelim 첫번째 글자의 번호
|
|
|
int indexOfEndDelim = 0; //endDelim 첫번째 글자의 번호
|
|
|
int nextIndexOfBeginDelim = 0; //beginDelim 마지막 글자 다음 번호
|
|
|
|
|
|
try
|
|
|
{
|
|
|
//문자열의 처음부터 beginDelim을 찾을 때까지 비교 수행
|
|
|
for (int i = 0; i <= source.Length - beginDelim.Length; i++)
|
|
|
{
|
|
|
if (source.Substring(i, beginDelim.Length).Equals(beginDelim))
|
|
|
{
|
|
|
isBeginDelimExisting = true;
|
|
|
indexOfBeginDelim = i; //저장하고 break;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
if (!isBeginDelimExisting) return ""; //입력받은 beginDelim가 존재하지 않으면 "" 리턴
|
|
|
//beginDelim이 source에 있는지 체크
|
|
|
//endDelim의 경우 beginDelim 이후의 존재 유무만 체크.
|
|
|
if (source.IndexOf(beginDelim) == -1) return "";
|
|
|
if (source.Substring(source.IndexOf(beginDelim) + beginDelim.Length).IndexOf(endDelim) == -1) return "";
|
|
|
|
|
|
//beginDelim 첫번째 글자의 번호
|
|
|
int beginIndex = source.IndexOf(beginDelim);
|
|
|
|
|
|
nextIndexOfBeginDelim = indexOfBeginDelim + beginDelim.Length; //beginDelim 마지막 글자 다음 번호 저장
|
|
|
//endDelim 첫번째 글자의 번호(beginDelim 이후에서 찾음)
|
|
|
int endIndex = source.Substring(beginIndex + beginDelim.Length).IndexOf(endDelim) + beginIndex + beginDelim.Length;
|
|
|
|
|
|
//beginDelim 뒤부터 EndDelim을 찾을 때까지 비교 수행
|
|
|
for (int i = nextIndexOfBeginDelim; i <= source.Length - endDelim.Length; i++)
|
|
|
//begin, end 둘다 "" 이면 문자열 그대로 출력
|
|
|
if (beginDelim == "" && endDelim == "")
|
|
|
{
|
|
|
if (source.Substring(i, endDelim.Length).Equals(endDelim))
|
|
|
return source;
|
|
|
}
|
|
|
//begin만 ""이면 문자열 처음부터 endDelim까지 출력.
|
|
|
else if (beginDelim == "" && endDelim != "")
|
|
|
{
|
|
|
isEndDelimExisting = true;
|
|
|
indexOfEndDelim = i; //저장하고 break;
|
|
|
break;
|
|
|
return source.Substring(0, beginIndex);
|
|
|
}
|
|
|
//end만 ""이면 beginDelim부터 문자열 끝까지 출력.
|
|
|
else if (beginDelim != "" && endDelim == "")
|
|
|
{
|
|
|
return source.Substring(beginIndex + beginDelim.Length, source.Length - (beginIndex + beginDelim.Length));
|
|
|
}
|
|
|
if (!isEndDelimExisting) return ""; //입력받은 endDelim가 존재하지 않으면 "" 리턴
|
|
|
|
|
|
//두 Delim 사이의 문자열 추출해서 리턴
|
|
|
return source.Substring(nextIndexOfBeginDelim, indexOfEndDelim - nextIndexOfBeginDelim);
|
|
|
//begin, end 둘 다 아니면 문자열 추출.
|
|
|
else
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
return source.Substring(beginIndex + beginDelim.Length, endIndex - (beginIndex + beginDelim.Length));
|
|
|
}
|
|
|
catch(Exception e)
|
|
|
catch (Exception e)
|
|
|
{
|
|
|
return ""; //그 외 에러 발생 시 "" 리턴
|
|
|
return "";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
... | ... | @@ -2592,9 +2590,13 @@ class ExtractStringProgram |
|
|
|
|
|
Console.WriteLine(code);
|
|
|
|
|
|
var cmd = ExtractString("exec APP.COMMON.SET(NID=PN000101,CMD='ED-SYS::::1')", "CMD='", "'");
|
|
|
var cmd = ExtractString("exec APP.COMMON.SET(NID = PN000101, CMD = 'ED-SYS::::1')", "CMD = '", "'");
|
|
|
|
|
|
Console.WriteLine(cmd);
|
|
|
|
|
|
var cmd2 = ExtractString("나는 박도현입니다. 박도현입니까? ", "박", "");
|
|
|
|
|
|
Console.WriteLine(cmd2);
|
|
|
}
|
|
|
}
|
|
|
```
|
... | ... | |