替换特定文本,同时忽略空格

本文关键字:空格 文本 替换 | 更新日期: 2023-09-27 18:30:58

我需要在忽略任何空格的情况下替换 C# 中的文本。

例如:

"This is a text with some tags <UL> <P> <LI>", 
"This is a text with some tags <UL>   <P>    <LI>", 
"This is a text with some tags <UL><P>    <LI>" or 
"This is a text with some tags <UL><P><LI>"

必须全部替换为

"This is a text with some tags <UL><LI>"

请注意,我只是无法从整个字符串中删除空格,然后替换所需的字符串,因为这会给出错误的结果 -

"Thisisatextwithsometags<UL><LI>"

我确定 3 个标签

"<UL>", "<P>" and "<LI>"

将按该顺序出现,但不确定它们之间的空格。

替换特定文本,同时忽略空格

玩得开心正则表达式!

Regex.Replace("<UL>   <P>    <LI>", "<UL>.*<LI>", "<UL><LI>", RegexOptions.None);

将第一个参数替换为需要更改的字符串,如果有

    (任何字符,无论它们包含什么空格)
  • ,它将仅用
    • 替换所有这些参数。

使用 String.Replace

string text = "This is a text with some tags <UL>   <P>    <LI>";
int indexOfUl = text.IndexOf("<UL>");
if (indexOfUl >= 0)
{
    text = text.Remove(indexOfUl) + text.Substring(indexOfUl).Replace(" ", "").Replace("<P>","");
}

旧答案(在您上次编辑之前工作):

string[] texts = new[]{"<UL> <P> <LI>", "<UL>   <P>    <LI>", "<UL><P>    <LI>" , "<UL><P><LI>"};
for(int i = 0; i < texts.Length; i++)
{
    string oldText = texts[i];
    texts[i] = oldText.Replace(" ", "").Replace("<P>", "");
}

或 - 由于问题不是很清楚("必须全部替换为 <UL><LI>"):

// ...
texts[i] = "<UL><LI>"; // ;-)

尝试使用正则表达式:

Regex.Replace(inputString, "> *<", "><");

假设每个字符串中都有

    标签。
      string[] stringSeparators = new string[] { "<UL>" };
      string yourString = "This is a text with some tags <UL><P><LI>";
      string[] text = yourString.Split(stringSeparators, StringSplitOptions.None);
      string outPut = text [0]+" "+ ("<UL>" + text[1]).Replace(" ", "").Replace("<P>", "");
    

看看这里字符串MSDN

也用于重新定位使用字符串.替换(字符串字符串)