作者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/m.aspx?n=bbs/mud_sanc/M.1562311368.A.CA2.html
1F:→ laechan : 其實還有更簡單的做法只是我不想那樣子做而已 07/05 15:23