有这样一串字符串,如下:我的2008年,最完美的老婆是一个不说话的女人,最完美的情人是一个不需要固定见面的女人。<a href="Journal_ActicleList.aspx?JournalNianhao=2008" class="act" target='_blank'>女人需要哭泣,并且只有在男人能听到的时候才哭。字符串里有2个“2008”,当“2008”在前后没有被“<"和">"包围起来时,我才能将"2008"替换为"二零零八",否则不做处理!请问,怎么判断这个"2008"是否前后各有一个“<"和">",不管“<"和">"的位置离“2008”有多远,只(例如:无论是"<2008>"还是"<a href="……?nian=2008" />等都是合乎要求的,而"<a href="……" > 2008 />"等则是不合要求的)求一个函数来判断,该怎么做?

解决方案 »

  1.   

    有这样一串字符串,如下: 我的2008年,最完美的老婆是一个不说话的女人,最完美的情人是一个不需要固定见面的女人。 <a href="Journal_ActicleList.aspx?JournalNianhao=2008" class="act" target='_blank'>女人需要哭泣,并且只有在男人能听到的时候才哭。 字符串里有2个“2008”,当“2008”在前后没有被“ <"和">"包围起来时,我才能将"2008"替换为"二零零八",否则不做处理! 请问,怎么判断这个"2008"是否前后各有一个“ <"和">",不管“ <"和">"的位置离“2008”有多远,只(例如:无论是" <2008>"还是" <a href="……?nian=2008" />等都是合乎要求的,而" <a href="……" > 2008 />"等则是不合要求的,因为前面的第一个"<"匹配的">"兵马俑将"2008"包含其中) 求一个函数来判断,该怎么做? 
      

  2.   

    正则表达式split,然后在每个数组中替换
      

  3.   

    替换尖括号里面的这样
    System.Text.RegularExpressions.Regex.Replace("输入字符串", "(<[^>]*)2008([^>]*>)", "$1二零零八$2", RegexOptions.Singleline);要替换外面的将正则参数改为
    "(>?[^<]*)2008([^<]*<?)"
      

  4.   

    哦 改正下 
    替换尖括号外面的正则是
    "([^<>]*>?[^<>]*)2008([^<>]*<?[^<>]*)"
      

  5.   

    WO_YOU_XIE_SHANG_XIN 的正则表达式有问题,但我现在思路清晰了一些!
    我现在只需要替换所有的在">"和"<"之间相匹配的内容即可,就是WO_YOU_XIE_SHANG_XIN说的在尖括号外面的内容即可!WO_YOU_XIE_SHANG_XIN的"([^<>]*>?[^<>]*)2008([^<>]*<?[^<>]*)"使用后将我的匹配内容全都替换得没了,变成“<a”了,为什么啊?
      

  6.   

    除了正则还有很多方法可以搞定!比如用innerhtml,innertext,outterhtml,outtertext或是用indexof+splite+replace都可以!
      

  7.   

    正文里不会有'<'或'>'的话
    str=Regex.Replace("2008<2008>",@"(?<!<[^>]*)2008","二零零八");
    结果
    str="二零零八<2008>";
      

  8.   

    经试验,下面的代码即可实现。
                string s = "我的<2008>2008年,< <2008 > 2008 >";
                string pat = "([^<]*)2008([^>]*)";
                string sp = Regex.Replace(s, pat, "$1二零零八$2");
    输出为:
                sp="我的<2008>二零零八年,< <2008 > 二零零八 >"
    这段代码不能处理嵌套<>。