在 Java If Else 块中将多个变量连接到一个字符串
Concatenate Multiple variables to a String in Java If Else Block
我需要创建一个字符串,它成为 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)。等等。
根据您的上下文,合理的答案可能以不同方式组织您的数据:
request_passphrase.concat("access_code=").concat(access_code)
您可以传递某种 Map<String, String>
而不是简单的字段列表(或更糟:方法参数) - 其中键表示 "field name",例如("access_code");映射值表示相应的值。如果该值为 null,则您知道不要附加它。
然后您可以简单地迭代该地图对象,提取 key/value 对并将它们附加到该字符串。也许您需要一个额外的列表,告诉您应在其中迭代映射键的 order。
如前所述:这些是 选项。为了做出明确的决定,应该更多地了解上下文;基础 "data model";其他要求等。有一点可以肯定:if/else 链 绝不是 一个好主意。
将字符串换成 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();
此外,您可以使用 Map<String, Optional<String>>
.
过滤掉 "nullable" 个参数
这将是一个非常好的主意。
我需要创建一个字符串,它成为 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)。等等。
根据您的上下文,合理的答案可能以不同方式组织您的数据:
request_passphrase.concat("access_code=").concat(access_code)
您可以传递某种 Map<String, String>
而不是简单的字段列表(或更糟:方法参数) - 其中键表示 "field name",例如("access_code");映射值表示相应的值。如果该值为 null,则您知道不要附加它。
然后您可以简单地迭代该地图对象,提取 key/value 对并将它们附加到该字符串。也许您需要一个额外的列表,告诉您应在其中迭代映射键的 order。
如前所述:这些是 选项。为了做出明确的决定,应该更多地了解上下文;基础 "data model";其他要求等。有一点可以肯定:if/else 链 绝不是 一个好主意。
将字符串换成 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();
此外,您可以使用 Map<String, Optional<String>>
.
过滤掉 "nullable" 个参数
这将是一个非常好的主意。