我有一批数据,其格式为:
^^
~~狮子纪念碑~~
**狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。**
@@卡贝尔桥狮子纪念碑@@
^^
^^
~~AAAA~~
**BBBB**
@@CCCC@@
^^有没有什么办法能把上面的字符替换成<div>
<span class="Item1">狮子纪念碑</span>
<span class="Item2">狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。</span>
<span class="Item3">卡贝尔桥狮子纪念碑</span>
</div>
<div>
<span class="Item1">AAAA</span>
<span class="Item2">BBBB</span>
<span class="Item3">CCCC</span>
</div>谢谢

解决方案 »

  1.   

    查看
    命名空间:System.Text.RegularExpressions
    下的Regex.Replace()方法,可以处理
      

  2.   

    http://msdn.microsoft.com/zh-cn/library/ms972966.aspx
    ASP.NET 中的正则表达式
      

  3.   

    这些标签就是要把这些 ~~,**,@@换成对应的<span class="Item1">
      

  4.   


    void Main()
    {
    string str=@"^^
    ~~狮子纪念碑~~
    **狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。**
    @@卡贝尔桥狮子纪念碑@@
    ^^
    ^^
    ~~AAAA~~
    **BBBB**
    @@CCCC@@
    ^^";
    string temp=@"<div><span class=""Item1"">{0}</span><span class=""Item2"">{1}</span><span class=""Item3"">{2}</span></div>";
      str=Regex.Replace(str,@"(?s)[^~]*?~+([^~]+)~+.*?\*+([^*]+).*?@+([^@]+)@+[^~]*",
       m=>string.Format(temp,m.Groups[1].Value,m.Groups[2].Value,m.Groups[3].Value));
    Console.WriteLine(str);
    //<div><span class="Item1">狮子纪念碑</span><span class="Item2">狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。</span><span class="Item3">卡贝尔桥狮子纪念碑</span></div><div><span class="Item1">AAAA</span><span class="Item2">BBBB</span><span class="Item3">CCCC</span></div>}
      

  5.   


    void Main()
    {
    string str=@"^^
    ~~狮子纪念碑~~
    **狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。**
    @@卡贝尔桥狮子纪念碑@@
    ^^
    ^^
    ~~AAAA~~
    **BBBB**
    @@CCCC@@
    ^^";
    string temp=@"<div>
    <span class=""Item1"">{0}</span>
    <span class=""Item2"">{1}</span>
    <span class=""Item3"">{2}</span>
      </div>";
      str=Regex.Replace(str,@"(?s)[^~]*?~+([^~]+)~+.*?\*+([^*]+).*?@+([^@]+)@+[^~]*",
       m=>string.Format(temp,m.Groups[1].Value,m.Groups[2].Value,m.Groups[3].Value));
    Console.WriteLine(str);
      /*
        <div>
    <span class="Item1">狮子纪念碑</span>
    <span class="Item2">狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。</span>
    <span class="Item3">卡贝尔桥狮子纪念碑</span>
      </div><div>
    <span class="Item1">AAAA</span>
    <span class="Item2">BBBB</span>
    <span class="Item3">CCCC</span>
      </div>  */
    }
      

  6.   

    Regex.Replace(text,"\*","");像这样呢就是把字符*掉,而且只弄掉一个,具体看正则表达式就明白了。
      

  7.   

    为什么非得用正则?For Example:string oldstr="~~狮子纪念碑~~";string newstr="";
    newstr=oldstr.Replace("~~","");
      

  8.   

                string str = @"^^
    ~~狮子纪念碑~~
    **狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。**
    @@卡贝尔桥狮子纪念碑@@
    ^^
    ^^
    ~~AAAA~~
    **BBBB**
    @@CCCC@@
    ^^";
                string[] split = { @"\^\^", "~~", @"\*\*", "@@" };
                string[] result = { "<div>", "</div>", "<span class=\"Item1\">", "</span>", "<span class=\"Item2\">", "</span>", "<span class=\"Item3\">", "</span>" };
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < split.Length; i++)
                {
                    Regex reg = new Regex(string.Format(@"(?s){0}(?:(?!{0}).)*{0}", split[i]));
                    foreach (Match m in reg.Matches(str))
                    {
                        string mValue = m.Value;
                        mValue = Regex.Replace(mValue, string.Format("^{0}", split[i]), result[i * 2]);
                        mValue = Regex.Replace(mValue, string.Format("{0}$", split[i]), result[i * 2 + 1]);
                        str=str.Replace(m.Value, mValue);
                    }
                }
                Console.WriteLine(str);
                Console.ReadLine();
    /*
    <div>
    <span class="Item1">狮子纪念碑</span>
    <span class="Item2">狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。</span>
    <span class="Item3">卡贝尔桥狮子纪念碑</span>
    </div>
    <div>
    <span class="Item1">AAAA</span>
    <span class="Item2">BBBB</span>
    <span class="Item3">CCCC</span>
    </div>
    */
      

  9.   


    如果数据不规范呢?
    比如:
    ^^
    ~~AAA0~~
    **BBB0**
    @@CCC0@@
    ^^
    ^^
    ~~AAAA~~
    @@CCCC@@
    ^^
    就是说,某一项里要是少行呢?
    就替换不了了。
      

  10.   

    //            string str = @"^^
    //~~狮子纪念碑~~
    //**狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。**
    //@@卡贝尔桥狮子纪念碑@@
    //^^
    //^^
    //~~AAAA~~
    //**BBBB**
    //@@CCCC@@
    //^^";
                string str = @"^^
    ~~AAA0~~
    **BBB0**
    @@CCC0@@
    ^^
    ^^
    ~~AAAA~~
    @@CCCC@@
    ^^";
                string[] split = { @"\^\^", "~~", @"\*\*", "@@" };
                string[] result = { "<div>", "</div>", "<span class=\"Item1\">", "</span>", "<span class=\"Item2\">", "</span>", "<span class=\"Item3\">", "</span>" };
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < split.Length; i++)
                {
                    Regex reg = new Regex(string.Format(@"(?s){0}(?:(?!{0}).)*{0}", split[i]));
                    foreach (Match m in reg.Matches(str))
                    {
                        string mValue = m.Value;
                        mValue = Regex.Replace(mValue, string.Format("^{0}", split[i]), result[i * 2]);
                        mValue = Regex.Replace(mValue, string.Format("{0}$", split[i]), result[i * 2 + 1]);
                        str=str.Replace(m.Value, mValue);
                    }
                }
                Console.WriteLine(str);
                Console.ReadLine();
    /*
    <div>
    <span class="Item1">AAA0</span>
    <span class="Item2">BBB0</span>
    <span class="Item3">CCC0</span>
    </div>
    <div>
    <span class="Item1">AAAA</span>
    <span class="Item3">CCCC</span>
    </div>
    */
      

  11.   


                string str = @"^^
    ~~狮子纪念碑~~
    **狮子纪念碑(Lion Monument)是卢塞恩数一数二的雕刻作品。**
    @@卡贝尔桥狮子纪念碑@@
    ^^
    ^^
    ~~AAAA~~
    **BBBB**
    @@CCCC@@
    ^^";
                string result = Regex.Replace(str, @"(?is)\^\^(.*?)\^\^", "<div>$1</div>");
                result = Regex.Replace(result, @"(?is)~~(.*?)(?=~~)~~", "<span class=\"Item1\">$1</span>");
                result = Regex.Replace(result, @"(?is)\*\*(.*?)(?=\*\*)\*\*", "<span class=\"Item2\">$1</span>");
                result = Regex.Replace(result, @"(?is)@@(.*?)(?=@@)@@", "<span class=\"Item3\">$1</span>");
                Console.WriteLine(result);