作者laechan (挥泪斩马云)
看板mud_sanc
标题[wizs] 把相关资料列表改成html格式
时间Fri Jul 5 15:22:46 2019
例如说底下是一个简单的列表
编号 物品名 价钱
==============================
1 眼药水 350
2 防蚊液 250
3 发泡锭 180
==============================
首先把所有的空白都改成单空白,并把 = 拿掉
编号 物品名 价钱
1 眼药水 350
2 防蚊液 250
3 发泡锭 180
然後把每一行的前後加上 <tr> 跟 </td></tr>
<tr> 编号 物品名 价钱</td></tr>
<tr> 1 眼药水 350</td></tr>
<tr> 2 防蚊液 250</td></tr>
<tr> 3 发泡锭 180</td></tr>
接着对每一行的 str 每一字元做判断
j=0;
new_str="";
if(str[i..i]!=" ")
new_str+=str[i..i];
else
{
if(j==0)
{
new_str+="<td>";
j=1;
}
else
new_str+="</td><td>";
}
就会变成底下
<tr><td>编号</td><td>物品名</td><td>价钱</td></tr>
<tr><td>1</td><td>眼药水</td><td>350</td></tr>
<tr><td>2</td><td>防蚊液</td><td>250</td></tr>
<tr><td>3</td><td>发泡锭</td><td>180</td></tr>
前後再加一下 <table border=2> 及 </table>
<table border=2>
<tr><td>编号</td><td>物品名</td><td>价钱</td></tr>
<tr><td>1</td><td>眼药水</td><td>350</td></tr>
<tr><td>2</td><td>防蚊液</td><td>250</td></tr>
<tr><td>3</td><td>发泡锭</td><td>180</td></tr>
</table>
如果把上面编成 html 档,执行起来如下
https://i.imgur.com/eZs5kmj.jpg
这里就会产生一个有趣的猜想: 以上能否透过函数来做?
过往我是修改列表函数,在函数内加上 html 化的相关程式段,
以前有 demo 过就是 sanc 全防具列表。
现在看起来好像可以先列表出来,再透过函数把列表结果 html 化。
例如虚拟物品列表
> vobjs -list
编号 名称 设定者 单位 性 质 携带 价钱 卖店 交易
============================================================================
a001 测试物品 laechan 个 怪掉落 1 100000 不可 不可
a002 测试箱子 laechan 个 测试物 1 10 不可 不可
b001 哀唱草袋子 laechan 袋 怪掉落 10 14112 不可
b002 腐臭花袋子 laechan 袋 怪掉落 10 15925 不可
============================================================================
写 running code
if(1)
{
mixed strs;
string str,new_str="",tmp_str="";
int s,ii;
str=@LONG
编号 名称 设定者 单位 性 质 携带 价钱 卖店 交易
============================================================================
a001 测试物品 laechan 个 怪掉落 1 100000 不可 不可
a002 测试箱子 laechan 个 测试物 1 10 不可 不可
b001 哀唱草袋子 laechan 袋 怪掉落 10 14112 不可
b002 腐臭花袋子 laechan 袋 怪掉落 10 15925 不可
============================================================================
LONG
;
str=substr(str," "," ");
strs=explode(str,"\n");
foreach(str in strs)
{
tmp_str="";
if(str[ii..ii]!="=")
{
s=strlen(str);
for(ii=0;ii<s;ii++)
{
if(str[ii..ii]==" ")
tmp_str+="</td><td>";
else
tmp_str+=str[ii..ii];
}
new_str+="<tr><td>"+tmp_str+"</td></tr>\n";
}
}
new_str="<table border=2>\n"+new_str+"\n</table>\n";
write(new_str);
}
==执行结果==
<table border=2>
<tr><td>编号</td><td>名称</td><td>设定者</td><td>单位</td><td>性质</td><td>
携带</td><td>价钱</td><td>卖店</td><td>交易</td></tr>
<tr><td>a001</td><td>测试物品</td><td>laechan</td><td>个</td><td>怪掉落
</td><td>1</td><td>100000</td><td>不可</td><td>不可</td></tr>
<tr><td>a002</td><td>测试箱子</td><td>laechan</td><td>个</td><td>测试物
</td><td>1</td><td>10</td><td>不可</td><td>不可</td></tr>
<tr><td>b001</td><td>哀唱草袋子</td><td>laechan</td><td>袋</td><td>怪掉落
</td><td>10</td><td>14112</td><td></td><td>不可</td></tr>
<tr><td>b002</td><td>腐臭花袋子</td><td>laechan</td><td>袋</td><td>怪掉落
</td><td>10</td><td>15925</td><td></td><td>不可</td></tr>
</table>
==执行结果==
https://i.imgur.com/0VG1qWJ.jpg
嘛,理论上是可行的,实际上则会产生一些问题就是了。
看起来在列表时就做 html 化会比较简单一点,如果是列表後才做
的话可能丢给 javascript 帮忙做会比较准确一点。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.66.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1562311368.A.CA2.html
1F:→ laechan : 其实还有更简单的做法只是我不想那样子做而已 07/05 15:23