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);
}
}
}