C# 如何修剪空间?

C# 如何修剪空间?,c#,.net,regex,C#,.net,Regex,我有一个字符串,它的开头和结尾都有空格。例如: <para> This is a test paragraph </para> 但这行不通 此外,我的字符串包含多行 string mainstring = "<para> This is a test paragraph </para>"; string regex1 = "(<\\w+[^<>\\/]*> | <\\/\\w+>)"; mainstring =

我有一个字符串,它的开头和结尾都有空格。例如:

<para> This is a test paragraph </para>
但这行不通

此外,我的字符串包含多行

string mainstring = "<para> This is a test paragraph </para>";
string regex1 = "(<\\w+[^<>\\/]*> | <\\/\\w+>)";
mainstring = Regex.replace(mainstring, regex1, "");
string mainstring=“这是一个测试段落”;
字符串regex1=“(|”)”;
mainstring=Regex.replace(mainstring,regex1,“”);
但这会删除所有找到的值,并将其替换为

主要输入:
“这是一个测试段落”


预期输出:
“这是一个测试段落”

您可以使用此正则表达式捕获标记和内部文本,忽略标记前后的空格

(<(\w+)>)\s*(.*?)\s*(<\/\2>)
印刷品

Before: <para> This is a test paragraph </para>
After: <para>This is a test paragraph</para>
Before:这是一个测试段落
之后:这是一个测试段落

我认为最简单的方法是提取标记之间的文本,然后对该文本使用
Trim()
方法:

  var mainstring = "<para> This is a test paragraph </para>";
  // First index of >
  var start = mainstring.IndexOf(">") + 1;
  var prefix = mainstring.Substring(0, start);
  // Last index of <
  var end = mainstring.LastIndexOf("<") - 1;
  var suffix = mainstring.Substring(end + 1);
  mainstring = prefix + mainstring.Substring(start, end - start + 1).Trim() + suffix;
var mainstring=“这是一个测试段落”;
//>的第一个索引
var start=mainstring.IndexOf(“>”)+1;
变量前缀=主字符串。子字符串(0,开始);
//最后索引<
var end=mainstring.LastIndexOf(“在要保留的零件周围使用(在替换模式中替换它们)和
\s+
删除空白:

string mainstring = "<para> This is a test paragraph </para>";
string regex1 = @"(<\w+[^<>/]*>)\s+|\s+(</\w+>)";
mainstring = Regex.Replace(mainstring, regex1, "$1$2");
Console.WriteLine(mainstring);
string mainstring=“这是一个测试段落”;
字符串regex1=@“()\s+|\s+()”;
mainstring=Regex.Replace(mainstring,regex1,“$1$2”);
控制台写入线(主环);

详细信息

  • ()\s+
    -组1(
    $1
    ):
    ,然后是组外的1+空格
  • |
    -或
  • \s+
    -1+空格
  • ()
    -第2组(
    $2
    ):
以下是:


如果“打开”标记后有换行符,或“关闭”标记前有换行符,是否要删除它们?因此,所有标记都是成对的,从不嵌套?它将所有值替换为“\1\3\4”"。在regex101.com中,输出是完美的,但在用C#编写相同的代码时,它并没有达到预期效果。使用
$1
而不是在C#中使用
\1
,我添加了一个C#代码演示。希望这会有所帮助。只是为了让它更清晰:当您不打算使用字符串转义序列时,逐字字符串文字是很好的。此外,
/
不是一个特殊的代码al regex char和.NET regex不使用regex分隔符。@PushpeshKumarRajwanshi-它替换了大部分代码,但在某些地方失败了。请帮助我。我无法将代码粘贴到这里。@PrimoChalice:您能分享示例中不起作用的部分吗?尽管我怀疑是其他原因导致无法使用它要使其工作。您可以在我的演示URL中添加示例。它似乎不工作,因为它吞噬了第一个
,请参阅@WiktorStribiżew谢谢,您是对的:)更正
  var mainstring = "<para> This is a test paragraph </para>";
  // First index of >
  var start = mainstring.IndexOf(">") + 1;
  var prefix = mainstring.Substring(0, start);
  // Last index of <
  var end = mainstring.LastIndexOf("<") - 1;
  var suffix = mainstring.Substring(end + 1);
  mainstring = prefix + mainstring.Substring(start, end - start + 1).Trim() + suffix;
string mainstring = "<para> This is a test paragraph </para>";
string regex1 = @"(<\w+[^<>/]*>)\s+|\s+(</\w+>)";
mainstring = Regex.Replace(mainstring, regex1, "$1$2");
Console.WriteLine(mainstring);