如果Else阻止,将多个变量连接到Java中的字符串

时间:2017-02-26 18:38:29

标签: java if-statement null concat string-concatenation

我需要创建一个字符串,该字符串成为SHA 256函数的输入,以生成其等效的哈希值。该字符串是通过连接多个变量创建的,如下所示:

String strRequest = "";

strRequest = request_passphrase.concat("access_code=").concat(access_code).concat("amount=").concat(amount).concat("command=").concat(mode).concat("currency=").concat(currency).concat("merchant_identifier=").concat(merchant_identifier).concat(request_passphrase);
if(strRequest!="" || !strRequest.isEmpty()) {
  signature = sha256(strRequest);
}

创建if-else以删除null变量的连接的最佳方法是什么。

对于前。如果access_code为Null或空,则字符串将为request_passphrase.concat(“amount =”)。concat(amount)。等等。

2 个答案:

答案 0 :(得分:3)

根据您的具体情况,合理的答案可以以不同方式整理您的数据:

request_passphrase.concat("access_code=").concat(access_code)

您可以传递某种Map<String, String> - 其中键表示&#34;字段名称&#34;,而不是具有平坦的字段列表(或更糟:方法参数),而不是(&#) 34; access_code&#34);并且地图值表示相应的值。如果该值为null,则表示不附加它。

然后,您可以简单地迭代该地图对象,拉出键/值对并将它们附加到该字符串。也许你需要一个额外的列表来告诉你应该迭代地图键的顺序

如上所述:这些是选项。为了做出明确的决定,人们应该更多地了解背景;基础&#34;数据模型&#34 ;;其他要求等。有一件事是绝对肯定的:if / else链是从不一个好主意。

答案 1 :(得分:3)

在Java 8 Optional中包装字符串:

Optional<String> accessCode = Optional.ofNullable("access");
Optional<String> addressCode = Optional.ofNullable(null);

System.out.println(accessCode.orElse("It was null."));
System.out.println(addressCode.orElse("It was null."));

在您的特定情况下,"It was null."应替换为空字符串。

除了。使用StringBuilder的实例来最小化String构造函数调用 典型用法:

StringBuilder outputBuilder = new StringBuilder("");
while (condition) {
    outputBuilder.append(" another chunk ");
}
outputBuilder.append("end.");
String outputString = outputBuilder.toString();

此外,你可以过滤掉&#34; nullable&#34;参数Map<String, Optional<String>>
这将是一个非常好的主意。