从字符串的开头和结尾删除 BR 标记

本文关键字:删除 BR 标记 结尾 字符串 开头 | 更新日期: 2023-09-27 18:30:50

如何使用类似的东西

return Regex.Replace("/(^)?(<br's*'/?>'s*)+$/", "", source);

要替换这种情况,请执行以下操作:

<br>thestringIwant => thestringIwant
<br><br>thestringIwant => thestringIwant
<br>thestringIwant<br> => thestringIwant
<br><br>thestringIwant<br><br> => thestringIwant
thestringIwant<br><br> => thestringIwant

它可以在开头或结尾有多个 br 标签,但我不想删除中间的任何 br 标签。

从字符串的开头和结尾删除 BR 标记

几个循环可以解决问题并且更容易阅读和理解(使用正则表达式 = 明天你看看你自己的代码想知道到底发生了什么)

while(source.StartsWith("<br>")) 
    source = source.SubString(4);
while(source.EndsWith("<br>"))  
    source = source.SubString(0,source.Length - 4);
return source;

当我看到您的正则表达式时,听起来 br 标签中可能允许有空格。因此,您可以尝试以下操作:

string s = Regex.Replace(input,@"'<'s*br's*'/?'s*'>","");

不需要使用正则表达式

您可以简单地使用

yourString.Replace("<br>", "");

这将从字符串中删除所有出现的<br>

编辑:

要将标签保留
在字符串之间,只需按如下方式使用-

var regex = new Regex(Regex.Escape("<br>"));
var newText = regex.Replace("<br>thestring<br>Iwant<br>", "<br>", 1);
newText = newText.Substring(0, newText.LastIndexOf("<br>"));
Response.Write(newText);

这将仅从字符串中删除第一次也是最后一次出现<br>

两部分做怎么样...

result1 = Regex.Replace("/^(<br's*'/?>'s*)+/", "", source);

然后将结果输入到

result2 = Regex.Replace("/(<br's*'/?>'s*)+$/", "", result1);

我知道这增加了一些开销,但极大地简化了事情,并节省了试图匹配中间不是 BR 的所有内容。

注意这两者之间的微妙区别..一个在开始时匹配它们,另一个在结束时匹配它们。这样做可以保持保持正则表达式的灵活性,该正则表达式允许 BR 标签的一般格式,而不是过于严格。

如果你也希望它与

<br />

然后你可以使用

return Regex.Replace("((:?<br's*/?>)*<br's*/?>$|^<br's*/?>(:?<br's*/?>)*)", "", source);

编辑:

现在它还应该照顾多个

<br's*/?>

在行的开头和结尾

你可以为这些东西编写一个扩展方法

 public static string TrimStart(this string value, string stringToTrim)
    {
        if (value.StartsWith(stringToTrim, StringComparison.CurrentCultureIgnoreCase))
        {
            return value.Substring(stringToTrim.Length);
        }
        return value;
    }

    public static string TrimEnd(this string value, string stringToTrim)
    {
        if (value.EndsWith(stringToTrim, StringComparison.CurrentCultureIgnoreCase))
        {                
            return value.Substring(0, value.Length - stringToTrim.Length);
        }
        return value;
    }

你可以这样称呼它

 string example = "<br> some <br> test <br>";
 example = example.TrimStart("<br>").TrimEnd("<br>"); //output  some <br> test 

我认为人们不应该忽视正则表达式的力量。如果您正确命名正则表达式,那么将来维护它并不困难。

我编写了一个示例程序,它使用正则表达式完成您的任务。它还忽略开头和结尾的字符大小写和空格。您可以尝试您拥有的其他源字符串示例。

最重要的是,它会更快。

using System;
using System.Text.RegularExpressions;
namespace ConsoleDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            string result;
            var source = @"<br><br>thestringIwant<br><br> => thestringIwant<br/> same <br/> <br/>  ";
            result = RemoveStartEndBrTag(source);
            Console.WriteLine(result);
            Console.ReadKey();
        }
        private static string RemoveStartEndBrTag(string source)
        {
            const string replaceStartEndBrTag = @"(^(<br>['s]*)+|(['s]*<br['s]*/>)+['s]*$)";
            return Regex.Replace(source, replaceStartEndBrTag, "", RegexOptions.IgnoreCase);
        }
    }
}