小编kin*_*tik的帖子

短路与非短路运营商

我理解下面的差异(至少对于Java):

if( true || false ) // short-circuiting boolean operator
if( true | false )  // non-short-circuiting boolean operator
Run Code Online (Sandbox Code Playgroud)

但我的问题是,在处理布尔表达式时,有没有理由使用非短路运算符?是否有某些性能优势或使用不被视为不良做法?

java

6
推荐指数
5
解决办法
3782
查看次数

访问<#list>中的对象的属性

我以前曾尝试将访问器添加到LineItem类,例如

public String getItemNo() {
    return itemNo;
}
Run Code Online (Sandbox Code Playgroud)

并将FTL从更改为${lineItem.itemNo}${lineItem.getItemNo()}但这没有用。解决方案是添加访问器,但更改FTL(将其保留为)${lineItem.itemNo}

背景

我正在使用Freemarker格式化某些电子邮件。在这封电子邮件中,我需要列出许多产品信息行,例如发票上的行。我的目标是传递一个对象列表(在Map内),以便可以在FTL中遍历它们。当前,我遇到一个问题,无法从模板中访问对象属性。我可能只想念一些小东西,但此刻我很沮丧。

使用Freemarker的Java类

这是我的代码的简化版本,目的是为了更快地理解问题。LineItem是具有公共属性(与此处使用的名称匹配)的公共类,使用简单的构造函数来设置每个值。我也尝试过使用带有访问器的私有变量,但这也不起作用。

我也这样存储ListLineItem对象内的Map,因为我也使用Map其他键/值对。

Map<String, Object> data = new HashMap<String, Object>();
List<LineItem> lineItems = new ArrayList<LineItem>();

String itemNo = "143";
String quantity = "5"; 
String option = "Dried";
String unitPrice = "12.95";
String shipping = "0.00";
String tax = "GST";
String totalPrice = "64.75"; 

lineItems.add(new LineItem(itemNo, quantity, option, unitPrice, shipping, tax, totalPrice)); …
Run Code Online (Sandbox Code Playgroud)

java freemarker

5
推荐指数
1
解决办法
1万
查看次数

Java - 正则表达式分割输入文本但保留分隔符

寻找一些正则表达式的帮助.我正在寻找一种Java方法,用文字分割一些输入文本,但也保留分隔符(空格,标点符号).另一种方法是将单词拆分为自己的索引,其他非单词字符可以放在数组的其他索引中.

这个输入文字:

"Hello, this isn't working!"
Run Code Online (Sandbox Code Playgroud)

应该放入这样的数组:

{"Hello", ",", "this", "isn't", "working", "!"}
Run Code Online (Sandbox Code Playgroud)

要么

{"Hello", ", ", "this", " ", "isn't", " ", "working", "!"}
Run Code Online (Sandbox Code Playgroud)

我用Python做了基本相同的事情:

def split_input(string):
    return re.findall(r"[\w']+|[\s.,!?;:-]", string)
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一种在Java中完成同样事情的方法.我尝试String.split()过前瞻/后视,我尝试过模式匹配,但运气不好.

任何帮助将非常感激!

java regex

0
推荐指数
1
解决办法
6097
查看次数

标签 统计

java ×3

freemarker ×1

regex ×1