我如何使用
之类的东西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标签。
答案 0 :(得分:5)
一些循环可以解决问题并且更容易阅读和理解(使用正则表达式=明天你看看你自己的代码,想知道到底发生了什么)
while(source.StartsWith("<br>"))
source = source.SubString(4);
while(source.EndsWith("<br>"))
source = source.SubString(0,source.Length - 4);
return source;
答案 1 :(得分:1)
当我看到你的正则表达式时,听起来br标签中可能有空格。 所以你可以尝试类似的东西:
string s = Regex.Replace(input,@"\<\s*br\s*\/?\s*\>","");
答案 2 :(得分:0)
无需使用正则表达式
你可以简单地使用
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>
的第一次和最后一次出现。
答案 3 :(得分:0)
您可以为此内容编写扩展方法
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
答案 4 :(得分:0)
如果您还希望它与
一起使用<br />
然后你可以使用
return Regex.Replace("((:?<br\s*/?>)*<br\s*/?>$|^<br\s*/?>(:?<br\s*/?>)*)", "", source);
编辑:
现在它还应该照顾多个
<br\s*/?>
在行的开头和结尾
答案 5 :(得分:0)
如何做到这一点呢......
result1 = Regex.Replace("/^(<br\s*\/?>\s*)+/", "", source);
然后将结果输入
result2 = Regex.Replace("/(<br\s*\/?>\s*)+$/", "", result1);
我知道这会增加一些额外的开销,但会极大地简化事情,并且可以避免尝试对抗不是BR的中间的所有内容。
注意这两者之间的细微差别..一个在开始时匹配它们,一个在结束时匹配它们。这样做可以保持正则表达式的灵活性,允许BR标签的一般格式化,而不是过于严格。
答案 6 :(得分:0)
我相信人们不应该忽视正则表达式的力量。如果你恰当地命名正则表达式,那么将来维护它就不难了。
我编写了一个使用Regex完成任务的示例程序。它还忽略了开头和结尾的字符大小写和空格。您可以尝试其他的源字符串样本。
最重要的是,它会更快。
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);
}
}
}