各位兄弟怎么把下面的字符串转成第二种形式,我的办法感觉很不灵活,谁能写出比较优的转化?谢谢了
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="XM" fieldtype="string" WIDTH="4"/>    转化后此行不要
<FIELD attrname="XM" fieldtype="bin.hex" SUBTYPE="Binary"/>
</FIELDS>
<PARAMS READONLY="TRUE"/>
</METADATA>
<ROWDATA>
<ROW XM="张三" ZP="/9yuhi/"/>   转化后XM="张三"不要
<ROW XM="李四" ZP="/9jfde/"/>   转化后XM="李四"不要
</ROWDATA>
</DATAPACKET>转化为的格式是
<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="XM" fieldtype="bin.hex" SUBTYPE="Binary"/>
</FIELDS>
<PARAMS READONLY="TRUE"/>
</METADATA>
<ROWDATA>
<ROW ZP="/9yuhi/"/>
<ROW ZP="/9jfde/"/>
</ROWDATA>
</DATAPACKET>诸如<ROW XM="李四" ZP="/9jfde/"/>的个数是不定的,要根据实际输入的判断。

解决方案 »

  1.   

    s:='<ROW XM="三" ZP="/9yuhi/"/>';
    index:=pos('Z',s);
    delete(s,5,index-6);
      

  2.   

    从题目看,你要动态检测一段文本,如果行中有“XM” 这样的字串,则将整行删除
    如果有 XM 这样的字串,则将行中含有 XM的一段删除var 
      StrText:Tstrings;
      StrRow:TStrings;
      i,j:integer;
    begin
     StrText:=TstringList.create;
      StrRow:=TStringlist.create;
      StrRow.daLimiter:=' '; //因为每一行中用空格分开,你要删除的实际是两个空行中的一段
      
       Strtext.add(.......)//将文本存入StrTEXT中,每行作为一个字符串;
       for i:=0 to strtext.count-1 do
         begin
          if substring('"xm"',Strtext.strings[i]) then//查找子串,子串具体函数忘了
          STRtext.strings[I]:='' //也可直接删除
        else //如果不含 “XM” 则查找是否含有 XM 
         strrow.dalimitedtext:=strtext.strings[i];
              for j:=0 to strrow.count-1 do 
                begin
                  if substring('xm',strrow.strings[j] then
                     strrow.delete(j); //删除该段
            
                end;
              strtext.strings[i]:=strrow.dalimitedtext;     end;
        //将strtext 写回到相应的文本中
      strtext.free;
        strRow.free;end;
      

  3.   

    导入Microsoft VBSCript Regular Expressions 1.0(Veersion 1.0)库,然后用正则表达式替换
       //把<FIELD **** "XM" ****  /> 替换为空字串
       //var RegExp1  : RegExp;
       RegExp1 := CoRegExp.Create();
       RegExp1.Pattern    := '<FIELD.+"XM".+/>';
       RegExp1.IgnoreCase := true;
       RegExp1.Global     := true;
       str                := RegExp1.Replace(strText,'');
       ShowMessage(str);
       RegExp1 := nil;