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

C# 从字符串的开头和结尾删除BR标记,c#,regex,string,C#,Regex,String,我怎么能用这样的东西 return Regex.Replace("/(^)?(<br\s*\/?>\s*)+$/", "", source); 返回Regex.Replace(“/(^”)(\s*)+$/”,“”,source); 要替换此情况,请执行以下操作: <br>thestringIwant => thestringIwant <br><br>thestringIwant => thestringIwant <br&g

我怎么能用这样的东西

return Regex.Replace("/(^)?(<br\s*\/?>\s*)+$/", "", source);
返回Regex.Replace(“/(^”)(\s*)+$/”,“”,source);
要替换此情况,请执行以下操作:

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

thestringIwant=>thestringIwant

thestringIwant=>thestringIwant
stringiwant
=>stringiwant

stringiwant

=>stringiwant stringiwant

=>stringiwant

在开始或结束时可以有多个BR标签,但是我不想在中间删除任何BR标签。

不需要使用正则表达式来表示它

你可以简单地使用

yourString.Replace(“
”,”)

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

编辑:

要在字符串之间保留
标记,只需使用以下命令-

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);
var regex=new regex(regex.Escape(“
”); var newText=regex.Replace(“
字符串
Iwant
”,“
”,1); newText=newText.Substring(0,newText.LastIndexOf(“
”); 响应。写入(新文本);

这将仅从字符串中删除第一次和最后一次出现的

几个循环将解决此问题,并且更易于阅读和理解(使用regex=明天您查看自己的代码时,会想知道到底发生了什么)

while(source.StartsWith(“
”) source=source.SubString(4); while(source.EndsWith(“
”) source=source.SubString(0,source.Length-4); 返回源;
您可以为这些东西编写一个扩展方法

 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 
string-example=“
一些
测试
”; 示例=示例.TrimStart(“
”).trimsend(“
”)//输出一些
测试
如果您还希望它与

<br />

那你可以用

return Regex.Replace("((:?<br\s*/?>)*<br\s*/?>$|^<br\s*/?>(:?<br\s*/?>)*)", "", source);
返回Regex.Replace((:?)*$|^(:?)*),“”,source);
编辑:

现在,它还应该处理多个问题

<br\s*/?>


在这行的开头和结尾

分两步做怎么样

result1 = Regex.Replace("/^(<br\s*\/?>\s*)+/", "", source);
result1=Regex.Replace(“/^(\s*)+/”,源代码);
然后将结果输入到

result2 = Regex.Replace("/(<br\s*\/?>\s*)+$/", "", result1);
result2=Regex.Replace(“/(\s*)+$/”,“”,result1);
这是一个额外的开销,我知道,但是简化了很多事情,并且节省了试图对抗中间不是BR的所有东西。


请注意这两者之间的细微差别。。一个在开头匹配,一个在结尾匹配。这样做可以保持保留正则表达式的灵活性,该正则表达式允许BR标记的常规格式,而不是过于严格。

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

string s = Regex.Replace(input,@"\<\s*br\s*\/?\s*\>","");
string s=Regex.Replace(输入@“\”,“”);

我认为不应该忽视正则表达式的威力。如果您恰当地命名正则表达式,那么将来维护它就不难了

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

最重要的是,它会更快

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);
        }
    }
}
使用系统;
使用System.Text.RegularExpressions;
名称空间控制台
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串结果;
var source=@“

序列号

=>序列号
相同的

”; 结果=RemoveStartEndBrTag(源); 控制台写入线(结果); Console.ReadKey(); } 私有静态字符串RemoveStartEndBrTag(字符串源) { 常量字符串replaceStartEndBrTag=@“(^(
[\s]*)+|([\s]*)+[\s]*$)”; 返回Regex.Replace(source,replaceStartEndBrTag,“,RegexOptions.IgnoreCase); } } }
用于解析html。例如,我需要使用正则表达式。您的
源代码能否包含需要保留的

?即<代码> BR>字符串
字符串
< /代码>产生?标准的String?替换是否有所需的效果,或者“
标签是否出现在您想要保留的中间字符串?”亚历克斯:它会产生:String
Strigi希望将BR标记保留在字符串的中间。- 1:这将在开始时删除所有<代码> <代码>字符;因此,也可以使用
,或者
break
中的
br
。现在它只删除一个

,而不是多个,如果您解决了这个问题,您只会得到已被接受的答案中的内容:)对不起,我太快了。我现在把它修好了,在字符串的开始和结尾不考虑字符情况和空白。你也应该处理好这件事。因为使用

是很常见的。
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);
        }
    }
}