在字符串中移动字符的位置

时间:2014-09-12 14:04:07

标签: c#

我想基于用户添加X之间的问题是我无法事先知道字符串的长度,因为它是动态变化的,因为添加了一些HTML标签

该字符串具有以下结构

  

文本.... AAA(X)BBB()CCC()DDD()....文本

可以使用HTML标记

让我的问题更简单, 问题是:找到尽可能接近DDD的last()或(X)。 示例

  

文字... AAA()BBB()CCC()DDD> span style =“color = red”> (X)> / span> ....文本

如何在不破坏文本文件结构的情况下改变X

的位置

我尝试了几乎所有的字符串函数替换,删除,子字符串...等结果(x)的情况下的问题,如果文件中的其他地方有(x),我怎么能找到位置最后一个()有或没有X

编辑:

可能的输入可以是:

<p>
     <span style='font-size:9.0pt;font-family:"Tahoma","sans-serif";color:black'>AAA() - BBB() - CCC() - DDD</span><b><span style='font-size:9.0pt;font-family:"Tahoma","sans-serif";color:red'>(X)</span></b>
     <span style='font-size:9.0pt;font-family:"Tahoma","sans-serif";color:black'>
        <o:p></o:p>
     </span>
  </p>

没有输出我只想知道last()的位置,在这种情况下,()的位置包含红色'&gt;之后的x(X)

2 个答案:

答案 0 :(得分:2)

  

我想找到带有或不带X

的last()的位置

找到最后()的位置和最后(X)的位置,然后找出哪一个更大。

string input = "Text .... AAA (X) BBB () CCC () DDD () .... Text";

int withXPos = input.LastIndexOf("(X)");
int withoutXPos = input.LastIndexOf("()");

int lastPos = Math.Max(withoutXPos, withXPos);

答案 1 :(得分:1)

使用String.LastIndexOf

var test=@"<p><span style='font-size:9.0pt;font-family:'Tahoma','sans-serif';color:black'>AAA() - BBB() - CCC() - DDD</span><b><span style='font-size:9.0pt;font-family:'Tahoma','sans-serif';color:red'>(X)</span></b>
                     <span style='font-size:9.0pt;font-family:'Tahoma','sans-serif';color:black'><o:p></o:p></span></p>";

 var withx = test.LastIndexOf("(X)");
 var without = test.LastIndexOf("()");