又一个问题!!感觉脑力确实不够用了555

nil2000 2008-07-05 06:42:52
需要按照要求拼一个日历字符串,需求是页面上有一个日历30天,如果DB里面有该日的话,则在该日下显示一个link



相当于将List里面的数据填入下面table!
如果list有数据1,2,就在下面table的<td>1</td><td>2</td>里面加上link变成
<td><a href="link1">1</a></td> <td><a href="link2">2</a></td>



<table width="200" border="1">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>8</td>
<td rowspan="2">9</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>



如果list里面数据是:1,6,7,8,9
则拼成下列字符串
<table width="200" border="1">
<tr>
<td><a href="link1">1</a></td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td><a href="link6">6</a></td>
</tr>
<tr>
<td><a href="link7">7</a></td>
<td><a href="link8">8</a></td>
<td rowspan="2"><a href="link9">9</a></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
...全文
426 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldy214 2008-07-16
  • 打赏
  • 举报
回复
新手 路过
nil2000 2008-07-16
  • 打赏
  • 举报
回复
对不起我说的太不清楚了!说了一个日历把大家都弄乱了啊。!!!

其实就是从数据库得到一个数组!里面都是数字1-9
然后目的就是数组里面有数字几!就在下面的table里面的找到这个数字并加上link



原始结构是这样:


<table width="200" border="1">
<tr>
<td> 1 </td>
<td>2 </td>
<td>3 </td>
</tr>
<tr>
<td>4 </td>
<td>5 </td>
<td> 6 </td>
</tr>
<tr>
<td> 7 </td>
<td>8 </td>
<td rowspan="2"> 9 </td>
</tr>
<tr>
<td>  </td>
<td>  </td>
</tr>
</table>


如果数组里面是1,2,8,9
那结果就是













<table width="200" border="1">
<tr>
<td> <a href="link6">1 </a></td>
<td><a href="link7">2 </a></td>
<td>3 </td>
</tr>
<tr>
<td>4 </td>
<td>5 </td>
<td> 6 </a> </td>
</tr>
<tr>
<td> 7 </td>
<td> <a href="link8">8 </a> </td>
<td rowspan="2"> <a href="link8"> 9 </a> </td>
</tr>
<tr>
<td>  </td>
<td>  </td>
</tr>
</table>

  • 打赏
  • 举报
回复
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

public class Test01 {

public static void main(String[] args) {
String str =
"<table width=\"200\" border=\"1\">\n" +
" <tr>\n" +
" <td>1 </td>\n" +
" <td>2 </td>\n" +
" <td>3 </td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>4 </td>\n" +
" <td>5 </td>\n" +
" <td>6 </td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>7 </td>\n" +
" <td>8 </td>\n" +
" <td rowspan=\"2\">9 </td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>  </td>\n" +
" <td>  </td>\n" +
" </tr>\n" +
"</table>";
List<String> list = new ArrayList<String>();
list.add("1");
list.add("6");
list.add("7");
list.add("8");
list.add("9");

Nil2000 nil = new Nil2000(list);
System.out.println(nil.processLinks(str));
}
}

class Nil2000 {

private List<String> links;
private Pattern pattern;

private final static String REGEX_PREFIX = "(<td[^>]*>)\\s*";
private final static String REGEX_SUFFIX = "\\s*(</td>)";
private final static String PROCESS_RESULT = "$1<a href=\"link$2\">$2</a>$3";

public Nil2000(List<String> links) {
setLinks(links);
}

public String processLinks(String str) {
compileRegex();
return pattern.matcher(str).replaceAll(PROCESS_RESULT);
}

public void setLinks(List<String> links) {
this.links = links;
this.pattern = null;
}

private void compileRegex() {
if(pattern != null) {
return;
}
pattern = Pattern.compile(generateRegex());
}

private String generateRegex() {
StringBuffer sb = new StringBuffer(REGEX_PREFIX + "(");
for(int i = 0, k = links.size(); i < k; i++) {
if(i > 0) {
sb.append("|");
}
sb.append(links.get(i));
}
sb.append(")" + REGEX_SUFFIX);
return sb.toString();
}
}
  • 打赏
  • 举报
回复
不会是要在原始的 HTML 字符串上再增加东西吧?
sagezk 2008-07-14
  • 打赏
  • 举报
回复
楼主这个需求哪里来的?
胡矣 2008-07-14
  • 打赏
  • 举报
回复
很抽象
  • 打赏
  • 举报
回复
这样的话,我实在是看不懂了,什么情况下出现 rowspan="2" 啊?
nil2000 2008-07-13
  • 打赏
  • 举报
回复
我看不懂的是下面红色的部分:

<table width="200" border="1">
<tr>
<td> <a href="link1">1 </a> </td>
<td>2 </td>
<td>3 </td>
</tr>
<tr>
<td>4 </td>
<td>5 </td>
<td> <a href="link6">6 </a> </td>
</tr>
<tr>
<td> <a href="link7">7 </a> </td>
<td> <a href="link8">8 </a> </td>
<td rowspan="2"> <a href="link9">9 </a> </td>
</tr>
<tr>
<td>  </td>
<td>  </td>
</tr>
</table>

为什么那里要 rowspan="2" 啊?
最后一行为什么只有两个 td 而且里面是   ?

如果按你所说的 1~30 的话,每行放 3 个,放 10 行正好放完啊,怎么会有多余的呢?





因为就是这个格式!就是要在这个table上面拼写啊!类似日历但是也不是日历!
何况每个月也不同,有的29天有的30天


nil2000 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bao110908 的回复:]
写了一个,可以参考一下:


Java codeimport java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class Test {

public static void main(String[] args) {
List<Integer> links = new ArrayList<Integer>();
links.add(3);
links.add(6);
links.add(9);
links.add(12);
links.add(15);
links.add(18);

[/Quote]














类似于日历但也不全是!

就要根据list里面的数据,在下面的table里添加link

例如:
如果list里面数据是:1,6,7,8,9
则拼成下列字符串
<table width="200" border="1">
<tr>
<td> <a href="link1">1 </a> </td>
<td>2 </td>
<td>3 </td>
</tr>
<tr>
<td>4 </td>
<td>5 </td>
<td> <a href="link6">6 </a> </td>
</tr>
<tr>
<td> <a href="link7">7 </a> </td>
<td> <a href="link8">8 </a> </td>
<td rowspan="2"> <a href="link9">9 </a> </td>
</tr>
<tr>
<td>  </td>
<td>  </td>
</tr>
</table>
nil2000 2008-07-07
  • 打赏
  • 举报
回复
类似于日历但也不全是!

就要根据list里面的数据,在下面的table里添加link

例如:
如果list里面数据是:1,6,7,8,9
则拼成下列字符串
<table width="200" border="1">
<tr>
<td> <a href="link1">1 </a> </td>
<td>2 </td>
<td>3 </td>
</tr>
<tr>
<td>4 </td>
<td>5 </td>
<td> <a href="link6">6 </a> </td>
</tr>
<tr>
<td> <a href="link7">7 </a> </td>
<td> <a href="link8">8 </a> </td>
<td rowspan="2"> <a href="link9">9 </a> </td>
</tr>
<tr>
<td>  </td>
<td>  </td>
</tr>
</table>






duzhonghua 2008-07-07
  • 打赏
  • 举报
回复
学习..........
  • 打赏
  • 举报
回复
我看不懂的是下面红色的部分:

<table width="200" border="1">
<tr>
<td><a href="link1">1</a></td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4 </td>
<td>5 </td>
<td><a href="link6">6</a></td>
</tr>
<tr>
<td><a href="link7">7</a></td>
<td><a href="link8">8</a></td>
<td rowspan="2"><a href="link9">9</a></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>

为什么那里要 rowspan="2" 啊?
最后一行为什么只有两个 td 而且里面是   ?

如果按你所说的 1~30 的话,每行放 3 个,放 10 行正好放完啊,怎么会有多余的呢?
  • 打赏
  • 举报
回复
是不是从 1~30,每个 tr 里放 3 个数字(td),总共放 10 行(tr)?
serryzhao 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 invoke100 的回复:]
问题都读不清爽!
[/Quote]
fsy123456accp 2008-07-07
  • 打赏
  • 举报
回复
顶12 楼的 你真的很强悍哦
sagezk 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 nil2000 的回复:]
类似于日历但也不全是!
就要根据list里面的数据,在下面的table里添加link
例如:
如果list里面数据是:1,6,7,8,9
则拼成下列字符串
...
[/Quote]

上面代码简单改改,大体思路一样,楼主应该有这个能力。
jabeginner 2008-07-06
  • 打赏
  • 举报
回复
用动态写的方法不行吗?
就在脚上作判断,如果有就,把你的连接标签write,没有就不write,这样就可以啦
Dread_return 2008-07-06
  • 打赏
  • 举报
回复
学习一下
  • 打赏
  • 举报
回复
怎么又来一个啊,日历的话,可不能这么拼字符串啊,比如 1 号是周日,那可以放在第 1 格,
如果是周 2 那么 1 就得放在第 3 格上的啊。
zjhlht 2008-07-06
  • 打赏
  • 举报
回复


值得学习~~~~~
加载更多回复(11)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧