출처 : 본인





/// <summary>

/// string 여러줄인 경우 해당하는 줄의 string 반환

/// </summary>

/// <param name="text">input text</param>

/// <param name="lineNo">Line Number</param>

/// <returns></returns>

public static string GetLineString(string text, int lineNo)

{

    string[] lines = text.Replace("\r", "").Split('\n');

    return lines.Length >= lineNo ? lines[lineNo - 1].Trim() : null;

}

/// <summary>

/// 가져오고 싶은 라인이 여러 라인인 경우

/// </summary>

/// <param name="text">input text</param>

/// <param name="startNo">start line</param>

/// <param name="endNo">end line</param>

/// <returns></returns>

public static string GetLineString(string text, int startNo, int endNo)

{

    StringBuilder sb = new StringBuilder();

 

    for (int i = startNo; i < endNo; i++)

    {

        string matchText = GetLineString(text, i);

        if (matchText != null)

            sb.AppendLine(matchText);

    }

 

    return sb.ToString();

}

/// <summary>

/// 해당 내용이 들어있는 LineNumber 반환

/// </summary>

/// <param name="text">input text</param>

/// <param name="match">filter</param>

/// <returns></returns>

public static int GetStringLine(string text, string match, bool regexFlag)

{

    int returnCnt = -1;

    int cnt = 0;

    using (StringReader reader = new StringReader(text))

    {

        string line;

        while ((line = reader.ReadLine()) != null)

        {

            line = line.Trim().Replace(" ", "").Replace("(", "<").Replace(")", ">");

            cnt++;

            if (regexFlag)

            {

                if (string.IsNullOrEmpty(line))

                    continue;

 

                //string pattern = string.Format(@"^[0-9][.|)][\s?]{0}.*", match);

                string pattern = string.Format(@"^[0-9]+[.|)]{0}.*", match.Replace(" ", "").Replace("(", "<").Replace(")", ">").Trim());

                Regex r = new Regex(pattern);

                Match m = r.Match(line);

                if (m.Success)

                {

                    if (!m.Value.Contains(":"))

                    {

                        returnCnt = cnt;

                        break;

                    }

                }

 

            }

            else

            {

                if (line.ToLower().Contains(match))

                {

                    returnCnt = cnt;

                    break;

                }

            }

        }

    }

    return returnCnt;

}



/// <summary>

/// 해당하는 문자열의 라인수를 모두 찾음

/// </summary>

/// <param name="text">input text</param>

/// <param name="match">filter</param>

/// <returns></returns>

public static List<int> GetStringLines(string text, string match)

{

    List<int> rtn = new List<int>();

    int cnt = 0;

    using (StringReader reader = new StringReader(text))

    {

        string line;

        while ((line = reader.ReadLine()) != null)

        {

            line = line.Trim();

            cnt++;

 

            if (line.ToLower().Contains(match.ToLower().Replace(" ", "")))

            {

                rtn.Add(cnt);

            }

 

        }

    }

    return rtn;

}

 

 

/// <summary>

/// 해당 문자열의 라인 수를 반환

/// </summary>

/// <param name="input"></param>

/// <returns></returns>

public static int LineCount(this string input)

{

    return input.LineReader().Count;

}

















Posted by motolies
,