写一个通用的字符串处理方法,它接受4个参数,如:
string _str = "<html><b>ABC</b></b><b>123</b></html>"; //参数1
string _para = "<b>";//参数2
string _para = "</b>";//参数3
int    n; //参数4,表示打印第几组的子串。如n=1;打印ABC</b>,2,打印123另一种情况:
string _str = "T1234E89TBFDE89KL";
string _para = "T";
string _para = "E";
int    n; //参数4,表示打印第几组的子串。如n=1;打印1234,2,打印BFD方法:
string GetString(string str,string p1,string p2,int n)
{
    //?????????????????????
}请各大虾指教!

解决方案 »

  1.   

    static string GetString(string str,string p1,string p2,int n)
    {
    string strResult = "";  try
    {
    int intStart=0,intEnd=0,i=0; while(true)
    {
    intStart = str.IndexOf(p1,intEnd);
    intEnd = str.IndexOf(p2,intStart);
    if(++i==n)
    break;
    } strResult = str.Substring(++intStart,intEnd-intStart);
    }
    catch(Exception ex)
    {
    strResult = ex.Message;
    }
    return strResult;
    }
      

  2.   

    修正static string GetString(string str,string p1,string p2,int n)
    {
    string strResult = "";  try
    {
    int intStart=0,intEnd=0,i=0; while(true)
    {
    intStart = str.IndexOf(p1,intEnd);
    intEnd = str.IndexOf(p2,intStart);
    if(++i==n)
    break;
    }
    intStart=p1.Length+intStart;
    strResult = str.Substring(intStart,intEnd-intStart);
    }
    catch(Exception ex)
    {
    strResult = ex.Message;
    }
    return strResult;
    }
      

  3.   

    //以下是我的测试代码using System;
    using System.Text.RegularExpressions;
    namespace FindString
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    string str = "W124#a56@F78k452R89e2"; // 输出“ErKfAw”
    string arrstr = string.Empty;
    arrstr = GetString(str); string _results = string.Empty;
    string _results1 = string.Empty;
    string _results2 = string.Empty; string _str = "<html><b>ABC</b></b><b>123</b></html>";
    string _para1 = "<b>";
    string _para2 = "</b>"; string _str1 = "T1234E89TBFDE89KL";
    string _para3 = "T";
    string _para4 = "E";
    string content = @"<td><div>你好123mjMJ & = - ? / <se>937,4*%^%^% </se>lkjlk</div>m<p>w.o? JKKMKKj & l中国df = tryt</p>ryj % l<div class=n>你不好</div>werjlkjl</td>"; string _para5 = "<div";
    string _para6 = "</div>"; _results = GetString(_str,_para1,_para2,0,0);
    _results1 = GetString(_str1,_para3,_para4,1,0);
    _results2 = GetString(content,_para5,_para6,0,1); // ----------------- print out ------------------------- Console.WriteLine(arrstr);
    Console.WriteLine(_results);
    Console.WriteLine(_results1);
    Console.WriteLine(_results2); //需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,
    //仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.
    string s=" x    xx    xxx  ";
    s=Regex.Replace(s.Trim()," +"," ");
    Console.WriteLine(s);
    } static string GetString(string str,string para1,string para2,int n,int attr)
    { Regex htmlRegex;
    Regex htmlRegex1;
    MatchCollection mc;
    MatchCollection mc1;
    string[] div; //content = aRegex.Replace(content, "");
    if(attr == 1)
    {
    htmlRegex = new Regex( para1 +@"[^>]*?>(?<content>[\s\S]*?)" + para2, RegexOptions.IgnoreCase | RegexOptions.Compiled);
    mc = htmlRegex.Matches(str);
    div = new string[mc.Count];
    for (int i=0; i<mc.Count; i++)
    {
    div[i] = mc[i].Groups["content"].Value;
    } }
    else
    {
    htmlRegex1 = new Regex( para1 +@"(?<content>[\s\S]*?)" + para2, RegexOptions.IgnoreCase | RegexOptions.Compiled);
    mc1 = htmlRegex1.Matches(str);
    div = new string[mc1.Count];
    for (int i=0; i<mc1.Count; i++)
    {
    div[i] = mc1[i].Groups["content"].Value;
    } } int y = div.Length;
    if(y >n || n == 0)
    return div[n];
    else if(y == n)
    return div[n-1];
    else
    return "请求输入下标超出范围!"; } static string GetString(string str)
    { string arr = string.Empty;
    string arrstr = string.Empty; foreach(char c in str)
    {
    if(char.IsLetter(c))
    {
    char temp;
    if(char.IsLower(c))
    temp = char.ToUpper(c);
    else
    temp = char.ToLower(c); arr = arr+temp;
    }
    } for(int j = arr.Length -1; j>=0; j--)
    {
    arrstr += arr.Substring(j,1);
    }

    return arrstr;
    }
    }
    }用正则表达式的执行效率比函数循环来判断高多了。