gpt4 book ai didi

java - 处理一个大的正则表达式问题

转载 作者:行者123 更新时间:2023-12-02 05:45:16 25 4
gpt4 key购买 nike

好吧,所以我遇到了这个问题,我需要创建一个类,它有一个构造函数来接收字符串,一个名为 add 的方法,它接受一个字符串对象对,其中名称是占位符名称,还有一个名为 render 的方法它用 add 中给出的对替换模板中的占位符。

所有这些都需要能够毫无问题地完成下面的测试。

@Test
public void testString() {
View view = new View("Hi, my name is {name}!");
view.add("name", "Josh");
Assert.assertEquals("Hi, my name is Josh!", view.render());
}

@Test
public void testList() {
View view = new View("<table>{rows}</table>");
view.add("rows", Arrays.asList("<tr><td>Louis</td><td>Armstrong</td></tr>", "<tr><td>Benny</td><td>Goodman</td></tr>"));
Assert.assertEquals("<table><tr><td>Louis</td><td>Armstrong</td></tr><tr><td>Benny</td><td>Goodman</td></tr></table>", view.render());
}

@Test
public void testView() {
View view = new View("<table>{rows}</table>");

View row1 = new View("<tr><td>{firstName}</td><td>{lastName}</td></tr>");
row1.add("firstName", "Louis");
row1.add("lastName", "Armstrong");
View row2 = new View("<tr><td>{firstName}</td><td>{lastName}</td></tr>");
row2.add("firstName", "Benny");
row2.add("lastName", "Goodman");

view.add("rows", Arrays.asList(row1, row2));
Assert.assertEquals("<table><tr><td>Louis</td><td>Armstrong</td></tr><tr><td>Benny</td><td>Goodman</td></tr></table>", view.render());
}

唯一的问题是我根本不知道该怎么做。谁能给我一个正确的方向插入?

最佳答案

因为这看起来是 ,我不会提供完整的解决方案,但根据要求,我将提供一些一般注意事项/提示。

<小时/>

以第一个测试用例为例:

  • View 构造函数的自变量/参数捕获为成员变量。我们将该成员变量称为 text

  • 捕获提供给add的每个键值关系。一般来说,这将通过Mapping来完成。数据结构。如果您无法使用该选项,那么您始终可以在每次调用 add 时直接修改 text

  • 执行渲染的替换。这可以通过replace method轻松完成。 。如果 textadd 中被修改,则只需返回它即可。

因此,如果不将这些实现细节包装到 View 类中,它看起来会像

@Test
public void testString() {
String text = "Hi, my name is {name}!";

final Map<String, String> placeHolderToReplacement = new HashMap<>();
placeHolderToReplacement.put("name", "Josh");

for (Map.Entry<String, String> entry : placeHolderToReplacement.entrySet()) {

text = text.replace("{"+entry.getKey()+"}", entry.getValue());

}

Assert.assertEquals("Hi, my name is Josh!", text);
}

我认为这应该为您提供足够的起点来解决问题。

现在,该帖子明确指出了字符串-对象对。它是否必须与采用 View 对象集合和 String 完全相同的 add 方法?您必须考虑是否可以接受提供重载方法与单一方法。如果必须是相同的方法,那么您需要自己执行类型检查。

关于java - 处理一个大的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com