C# 使用C对字符串中的html元素重新排序#

C# 使用C对字符串中的html元素重新排序#,c#,html,.net,C#,Html,.net,我有一个从服务返回的html字符串。我需要更新这个html服务器端(使用.Net),并在将其发送到客户端之前对一些元素重新排序。作为一个简单的例子,让我们假设我有一个html字符串,如下所示。如果字符串是如下所示的表。我如何操作它将姓氏和放入它自己的。html将更大、更复杂,但下面的一部分说明了我需要如何更改它。由于实际HTML的复杂性,仅仅使用字符串替换并不能很好地工作 初始字符串 "<table> <tbody> <tr>

我有一个从服务返回的html字符串。我需要更新这个html服务器端(使用.Net),并在将其发送到客户端之前对一些元素重新排序。作为一个简单的例子,让我们假设我有一个html字符串,如下所示。如果字符串是如下所示的表。我如何操作它将姓氏
放入它自己的
。html将更大、更复杂,但下面的一部分说明了我需要如何更改它。由于实际HTML的复杂性,仅仅使用字符串替换并不能很好地工作

初始字符串

   "<table>
     <tbody>
      <tr>
        <th>First name</th>
        <td>some first name</td>
        <th>Last name</th>
        <td>some last name</td>
      </tr>
      <tr>
        <th>blah</td>
        <td>blah blah</td>
      </tr>
     </tbody>
    </table>
    "
”
名字
一些名字
姓
一些姓
废话
废话
"
修改后

   "<table>
     <tbody>
      <tr>
        <th>First name</th>
        <td>some first name</td>
      </tr>
        <th>Last name</th>
        <td>some last name</td>
      <tr>
        <th>blah</td>
        <td>blah blah</td>
      </tr>
     </tbody>
    </table>
    "
”
名字
一些名字
姓
一些姓
废话
废话
"

一个非常简单的方法是

var result = htmlString.Replace("<th>Last name</th>", "</tr><tr><th>Last name</th>");
var result=htmlString.Replace(“姓氏”、“姓氏”);

如果您需要比这更复杂的内容,您需要为您的问题添加更多细节。

为了回答这个问题,我将愚蠢地假设您已经阅读了字符串列表中的文件。让我们将此列表命名为HTMLINES。那么下面的内容应该是你想要的

int length=HTMLLines.Count;
for(int loop=0;loop<length;loop++)
{
     if(HTMLLines[loop].Equals("<th>Last name</th>"))
     {
          HTMLLines[loop]="</tr>\n<tr>\n"+HTMLLines[loop];
          //break;//If there is only one occurrence, remove the leading // else keep that to repeat for each occurence
     }
}

我希望这有助于为您指明正确的方向。

我知道URL答案不受欢迎,但您应该查看HTML敏捷性包。它是为这种事情设计的


你的努力在哪里。“处理问题的最佳方法是什么”——主要是基于观点的问题。不清楚你想从你的问题中做什么。请在“之前”和“之后”发布您想要更改的订单。您能绕过返回HTML的Web服务吗?如果它只是一个表,那么可以在字符串数组的JSON对象中更好地表示它。对于这种特殊情况,如果希望它绝对干净,甚至可以编写XSLT转换(将HTML视为XML),并将其应用于XML文档。否则,你最好指定你想做什么样的“操作”,也就是说,给出一些预期的结果。我已经更新了它。您的after HTML似乎在姓氏cols周围缺少了一个附加的
,不幸的是,对于我的情况来说,这种方法太简单了。我已经为这个问题添加了一些额外的细节。我的解决方案仍然适用于您更新的细节。您需要提供数据的所有预期案例。你想用4比2来替换任何箱子吗?还是所有姓氏的案例?或者通常修复表列中的任何不匹配,这要困难得多。标记中的内容是动态的,这就是为什么我认为这不起作用。你能给出不同的例子吗?目前很难说我们在HTML.super中应该期待什么,尤其是最后一部分
int length=HTMLLines.Count;
for(int loop=0;loop<length;loop++)
{
     for(int loop1=0;loop1<theHeaders.Length;loop1++)
     {
         if(HTMLLines[loop].Equals(theHeaders[loop1]))
         {
              HTMLLines[loop]="</tr>\n<tr>\n"+HTMLLines[loop];
              break;
         }
    }
}