问题是这样的。
有这样一段HTML字符串.
我需要获取Col的标签里的宽度值(可能是style='width:90px' 也可能直接是'width=90px')
替换到对应列的Td宽度.
难点1 上司要求不能转换成XML(这个已经实现了,考虑通用性)
难点2 table可能嵌套 其实说起来不复杂 逻辑还是有点绕的。
如果各位高手时间充足 不妨试试 练练手的同时 也帮为开辟一下例子或者思路。我正在试着实现
结果困扰我2天了 只实现了再没有嵌套Table下的替换 悲剧。
还要考虑colspan的问题。
转换之前 字符串
<
table
width
=
'100%'
border
=
'1'
>
<
col
width
=
'100px'
>
<
tr
>
<
td
colspan
=
'2'
>
<
table
width
=
'100%'
border
=
'1'
>
<
col
/>
<
col
width
=
'91px'
/>
<
col
width
=
'92px'
/>
<
tr
>
<
td
align
=
'left'
>
ISBN
</
td
>
<
td
align
=
'left'
>
Title
</
td
>
<
td
align
=
'right'
>
Price
</
td
>
<
td
align
=
'right'
>
AAA
</
td
>
</
tr
>
<
tr
>
<
td
align
=
'left'
>
3476896
</
td
>
<
td
align
=
'left'
>
My first HTML
</
td
>
<
td
align
=
'right'
>
$53
</
td
>
<
td
align
=
'right'
>
BB
</
td
>
</
tr
>
<
tr
>
<
td
align
=
'left'
>
3476897
</
td
>
<
td
align
=
'left'
>
My second HTML
</
td
>
<
td
align
=
'right'
>
$56
</
td
>
<
td
align
=
'right'
>
CC
</
td
>
</
tr
>
</
table
>
</
td
>
</
tr
>
</
table
>
<
table
width
=
'100%'
border
=
'1'
>
<
tr
>
<
td
colspan
=
'2'
width
=
'100px'
>
<
table
width
=
'100%'
border
=
'1'
>
<
tr
>
<
td
align
=
'left'
>
ISBN
</
td
>
<
td
align
=
'left'
width
=
'91px'
>
Title
</
td
>
<
td
align
=
'right'
width
=
'92px'
>
Price
</
td
>
<
td
align
=
'right'
>
AAA
</
td
>
</
tr
>
<
tr
>
<
td
align
=
'left'
>
3476896
</
td
>
<
td
align
=
'left'
width
=
'91px'
>
My first HTML
</
td
>
<
td
align
=
'right'
width
=
'92px'
>
$53
</
td
>
<
td
align
=
'right'
>
BB
</
td
>
</
tr
>
<
tr
>
<
td
align
=
'left'
>
3476897
</
td
>
<
td
align
=
'left'
width
=
'91px'
>
My second HTML
</
td
>
<
td
align
=
'right'
width
=
'92px'
>
$56
</
td
>
<
td
align
=
'right'
>
CC
</
td
>
</
tr
>
</
table
>
</
td
>
</
tr
>
</
table
>
试试用Jumony Core这个HTML解析
首先谢谢回复 第一你说这个我没有时间来查阅和理解使用了。今天下午交东西
第二 上司的意思还是要用纯字符串操作实现。没办法。
@何小宝: 那就用正则表达式
@dudu: 写了一半 感觉正则实现不了 不然也不会来发帖了。
可能是我经验尚浅
只要为<col width='***px' /> 或<col style='width:90px' />
写个正则表达式就可以取到col 里面对应的宽度了。
您好 这个值 我已经取到了 关键是.
嵌套Table的时候的赋值问题。我卡在这里了
@何小宝: 赋值得的话,还真没有什么好办法。
平时都是用到取值。
如果你在嵌套table的时间能取到对应的td位置的话,那你不妨试试在对应的td处插入你要替换的宽度字符串(前后要加上空格),你可以试试吧