我现在有一个字符串:var str = "<span val='1'>Hello</span>12345<span val='2'>Hero</span>";我现在想实现两种功能:
1:把整个span标签替换成他的属性val的值。也就是替换的结果是:1123452
2:删除最后一个span标签。也就是删除之后的结果是:<span val='1'>Hello</span>12345
   如果字符串不是以span标签结尾的,就只删除一个字符。
   比如:
   var str = "<span var='1'>Hello</span>123";//这个字符是以3结尾的所以替换后的结果应该是:<span var='1'>Hello</span>12求各位大侠拔刀相助用C#或者JS实现都可以。。谢谢了。。

解决方案 »

  1.   

    1.
     var str = "<span val='1'>Hello</span>12345<span val='2'>Hero</span>";
                str = Regex.Replace(str, @"(?i)<span[^>]*?val=['""]([^'""]+)[^>]*>[^<]*</span>", "$1");
                
    2.
                var str = "<span val='1'>Hello</span>12345<span val='2'>Hero</span>";
               if (Regex.IsMatch(str, @"(?is)</span>$"))
                {
                    str = Regex.Replace(str, @"(?is)<span[^>]*>[^<]*</span>$", "");
                }
                else
                {
                    str = str.Substring(0, str.Length - 1);
                }
      

  2.   

    你好,hjywyj 
    还有个小小的问题:就是假如span标签都是大写的话就匹配不到.比如:<SPAN>a</SPAN>
    但是html是忽略大小写的。。请问应该怎么写才能忽略大小写??谢谢。。
      

  3.   

    str = Regex.Replace(str, @"(?i)<span[^>]*?val=['""]([^'""]+)[^>]*>[^<]*</span>", "$1",RegexOptions.IgnoreCase);