从字符串的开头和结尾删除 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 标签。
几个循环可以解决问题并且更容易阅读和理解(使用正则表达式 = 明天你看看你自己的代码想知道到底发生了什么)
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);
}
}
}