网站建设方案书 百度,如何登录微信公众号管理平台,广州建设工程交易中心主管部门,app开发建设公司问题描述
成成最近在搭建一个网站#xff0c;其中一些页面的部分内容来自数据库中不同的数据记录#xff0c;但是页面的基本结构是相同的。例如#xff0c;对于展示用户信息的页面#xff0c;当用户为 Tom 时#xff0c;网页的源代码是#xff1a;
而当用户为 Jerry 时…问题描述
成成最近在搭建一个网站其中一些页面的部分内容来自数据库中不同的数据记录但是页面的基本结构是相同的。例如对于展示用户信息的页面当用户为 Tom 时网页的源代码是
而当用户为 Jerry 时网页的源代码是
这样的例子在包含动态内容的网站中还有很多。为了简化生成网页的工作成成觉得他需要引入一套模板生成系统。 模板是包含特殊标记的文本。成成用到的模板只包含一种特殊标记格式为 {{ VAR }}其中 VAR 是一个变量。该标记在模板生成时会被变量 VAR 的值所替代。例如如果变量 name “Tom”则 {{ name }} 会生成 Tom。具体的规则如下 ·变量名由大小写字母、数字和下划线 (_) 构成且第一个字符不是数字长度不超过 16 个字符。 ·变量名是大小写敏感的Name 和 name 是两个不同的变量。 ·变量的值是字符串。 ·如果标记中的变量没有定义则生成空串相当于把标记从模板中删除。 ·模板不递归生成。也就是说如果变量的值中包含形如 {{ VAR }} 的内容不再做进一步的替换。
格式
输入格式输入的第一行包含两个整数 m, n分别表示模板的行数和模板生成时给出的变量个数。接下来 m 行每行是一个字符串表示模板。接下来 n 行每行表示一个变量和它的值中间用一个空格分隔。值是字符串用双引号 () 括起来内容可包含除双引号以外的任意可打印 ASCII 字符ASCII 码范围 32, 33, 35-126。
输出格式输出包含若干行表示模板生成的结果。
输入
11 2
!DOCTYPE html
html
head
titleUser {{ name }}/title
/head
body
h1{{ name }}/h1
pEmail: a hrefmailto:{{ email }}{{ email }}/a/p
pAddress: {{ address }}/p
/body
/html
name David Beckham
email davidbeckham.com输出
!DOCTYPE html
html
head
titleUser David Beckham/title
/head
body
h1David Beckham/h1
pEmail: a hrefmailto:davidbeckham.comdavidbeckham.com/a/p
pAddress: /p
/body
/html评测用例规模与约定
0 ≤ m ≤ 1000 ≤ n ≤ 100输入的模板每行长度不超过 80 个字符不包含换行符。输入保证模板中所有以 {{ 开始的子串都是合法的标记开始是两个左大括号和一个空格然后是变量名结尾是一个空格和两个右大括号。输入中所有变量的值字符串长度不超过 100 个字符不包括双引号。保证输入的所有变量的名字各不相同。
代码
import java.io.BufferedInputStream;
import java.io.IOException;
import java.util.*;public class Main{public static void main(String[] args) throws IOException {Scanner input new Scanner(new BufferedInputStream(System.in));int m input.nextInt();int n input.nextInt();ListString list new ArrayList();input.nextLine();for (int i 0; i m; i){list.add(input.nextLine());}MapString, String map new HashMap();for (int i 0; i n; i){String s input.nextLine();int blankIndex s.indexOf( );String key s.substring(0, blankIndex);String value s.substring(blankIndex 1);map.put({{ key }}, value.substring(1, value.length() - 1));}ListString res replaceStr(list, map);for (String s : res){System.out.println(s);}input.close();}/*** 将list中含有的map进行替换* param list* param map*/public static ListString replaceStr(ListString list, MapString, String map){ListString res new ArrayList();for (int i 0; i list.size(); i){String str list.get(i);int start 0;int end 0;for (;;){if((start str.indexOf({{ , start)) -1){break;}if ((end str.indexOf( }}, start)) -1){break;}String key str.substring(start, end 3);str str.replace(key, map.getOrDefault(key, ));start map.getOrDefault(key, ).length();}res.add(str);}return res;}
}