Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除连续的<;br>;使用正则表达式c从字符串#_C#_Regex - Fatal编程技术网

C# 删除连续的<;br>;使用正则表达式c从字符串#

C# 删除连续的<;br>;使用正则表达式c从字符串#,c#,regex,C#,Regex,我有以下字符串正则表达式 "choose to still go on the trip. <br><br>\r\nNote that when booking" “选择继续旅行。\r\n预订时请注意” 在用正则表达式转换它之后,我需要用一个标记替换标记,所以字符串如下所示 "choose to still go on the trip. <br>Note that when booking" “选择继续旅行。请注意,在预订时” 编辑:如果您不知道您有多

我有以下字符串正则表达式

"choose to still go on the trip. <br><br>\r\nNote that when booking"
“选择继续旅行。

\r\n预订时请注意”
在用正则表达式转换它之后,我需要用一个

标记替换

标记,所以字符串如下所示

"choose to still go on the trip. <br>Note that when booking"
“选择继续旅行。
请注意,在预订时”
编辑:如果您不知道您有多少个

,可以执行以下操作:

  • 使用

    拆分字符串并删除空条目
  • 使用单个

  • 代码如下:

    string yourString = "choose to still go on the trip. <br><br>\r\nNote that when booking";
    
    var temp = 
        yourString.Split(new string[] { "<br>" }, StringSplitOptions.RemoveEmptyEntries)
                   .Where(i => i.Replace(" ", string.Empty).Length > 0);
    
    string result = string.Join("<br>", temp);
    
    string yourString=“选择继续旅行。

    \r\n预订时请注意”; 变量温度= 拆分(新字符串[]{“
    ”},StringSplitOptions.RemoveEmptyEntries) 其中(i=>i.Replace(“,string.Empty).Length>0); 字符串结果=string.Join(“
    ”,temp);
    就像马丁·伊登所怀疑的那样:

    while (text.Contains("<br><br>")) 
    { 
        text = text.Replace("<br><br>", "<br>"); 
    }    
    
    while(text.Contains(“

    ”) { text=text。替换(“

    ”,“
    ”; }

    string newString=oldString.Replace(“


    ”,“
    ”); newString=newString.Replace(“

    ”,“
    ”);

    使用递增的

    执行多行这样的操作如果需要考虑标记之间存在空格的情况,请尝试以下正则表达式:

    myInputStr = Regex.Replace(myInputStr,
        @"([\b\s]*<[\b\s]*[bB][rR][\s]*/?[\b\s]*>){2,}",
        "<br>", RegexOptions.Multiline);
    
    myInputStr=Regex.Replace(myInputStr,
    @“([\b\s]*){2,}”,
    “
    ”,RegexOptions.Multiline);

    此正则表达式将用单个实例替换2个或多个

    标记实例,而不管标记的形式(间距、大小写、自动关闭等)。

    这可以通过另一种(更安全的)方式完成,使用HTML Agility Pack(开源项目)

    它考虑了各种符号



    ,无需担心。这意味着您可以专注于实际任务:替换重复项

    Regex.Replace(input, @"(<br\s*/{0,1}>\s*(</\s*br>)*){2,}", "<br>", 
        RegexOptions.CultureInvariant | 
        RegexOptions.IgnoreCase |
        RegexOptions.Multiline);
    
    请参阅,它解释了如何替换重复项的方法。

    Regex.replace(输入,@“(\s*()*){2,}”,“
    ”,
    Regex.Replace(input, @"(<br\s*/{0,1}>\s*(</\s*br>)*){2,}", "<br>", 
        RegexOptions.CultureInvariant | 
        RegexOptions.IgnoreCase |
        RegexOptions.Multiline);
    
    RegexOptions.CultureInvariant| RegexOptions.IgnoreCase| RegexOptions.Multiline);





    的任何两个或多个事件替换为一个

    这将考虑到空格<代码>
    将与


    匹配


    如果您事先删除了不需要的“\r\n”,您可以省略
    RegexOptions。多行

    这不适用于3个或更多

    (以及该“版本”)br来自用户输入,我不知道会有多少个。如果您需要的只是将“

    ”的实例替换为“
    ”,这将起作用。如果有更多的br标记,或者标记的格式不同(例如
    ),那么这将不起作用。您遇到的问题比您想象的要大。。。。现在是

    (现在)你能解释一下更广泛的背景吗?为什么要从一个有两个br和一个换行符的字符串变成一个有一个br和一个不换行符的字符串?我假设您希望将其渲染回用户。也许一个好的方法是去掉所有标记(请参阅),然后插入新标记(如有换行符的地方有
    标记?这不起作用。如果我有


    ,该怎么办?第一行将把它减少到只

    ,这样第二行就不会捕捉到它。如果必须采取这种方法,那么while(text.Contains(

    )){text=text.Replace(“

    ”,“
    ”);}同样,这不会处理不同格式的br标记-例如,
    ,我相信这是有效的html。现在你有两个问题。等等,这就是他们对正则表达式的说法:)@VVS:你是什么意思,是吗?@L-Tree:虽然Agility Pack非常酷,但您却在针对单个问题推出一个功能齐全的框架,这可能会导致更多问题。@VVS:是的,这是一个旨在帮助您完成任务的框架。对我来说,这是使用一个可能做得更好的框架来简化任务。