我在Java中有一个连接2个字符串的方法。它目前工作正常,但我认为它可以写得更好。
public static String concat(String str1, String str2) {
String rVal = null;
if (str1 != null || str2 != null) {
rVal = "";
if (str1 != null) {
rVal += str1;
}
if (str2 != null) {
rVal += str2;
}
}
return rVal;
}
以下是一些要求:
任何人都可以用更少的代码来做这件事吗?
答案 0 :(得分:15)
仅使用普通if
子句:
public static String concat(String str1, String str2) {
if(str1==null) return str2;
if(str2==null) return str1;
return str1 + str2;
}
或者,如果你对括号有着深深的热爱:
public static String concat(String str1, String str2) {
if(str1==null)
{
return str2;
}
if(str2==null)
{
return str1;
}
return str1 + str2;
}
答案 1 :(得分:13)
不确定
public static String concat(String str1, String str2) {
return str1 == null ? str2
: str2 == null ? str1
: str1 + str2;
}
请注意,这会在第一个条件中处理“both null”的情况:如果str1
为null,那么您要么返回null(如果str2
为null)或{{1 (如果str2
不为null) - 只需返回str2
即可处理这两种情况。
答案 2 :(得分:1)
import org.apache.commons.lang.StringUtils;
StringUtils.join([str1, str2]);
将提供的数组的元素连接到包含提供的元素列表的单个String中。
未在连接的String中添加分隔符。数组中的空对象或空字符串由空字符串表示。
StringUtils.join(null) = null
StringUtils.join([]) = ""
StringUtils.join([null]) = ""
StringUtils.join(["a", "b", "c"]) = "abc"
StringUtils.join([null, "", "a"]) = "a"
答案 3 :(得分:0)
每个人似乎都错过了条件1,如果两个字符串都为null,则返回null。最简单的阅读版本(IMO)随后变为:
public static String concat(String str1, String str2) {
if(str1==null && str2==null) return null;
if(str1==null) return str2;
if(str2==null) return str1;
return str1 + str2;
}
答案 4 :(得分:0)
public class ConcatTest extends TestCase {
// 1. If both str1 and str2 are null, the method returns null
public void testBothNull() throws Exception {
assertNull(concat(null, null));
}
// 2. If either str1 or str2 is null, it will just return the not null
// String
public void testOneNull() throws Exception {
assertEquals("a", concat(null, "a"));
assertEquals("b", concat("b", null));
}
// 3. If str1 and str2 are not null, it will concatenate them
public void testNonNull() throws Exception {
assertEquals("ab", concat("a", "b"));
}
// 4. It never adds "null" to the result (not really testable)
public static String concat(String a, String b) {
if (a == null && b == null)
return null;
return denulled(a) + denulled(b);
}
private static String denulled(String s) {
return s == null ? "" : s;
}
}