【发布时间】:2018-06-12 08:44:20
【问题描述】:
我简单地定义一个吸收字符串如下: 当与任何其他字符串连接时,结果是空字符串(另一个吸收元素)。
我知道 JavaScript 中可能不存在这样的元素,但我想出了一个简单的逻辑来模拟这个
"_".repeat(str.length/str.length)+ str+ "_".repeat(str.length/str.length)
例子:
var str = "HP";
var result = "_".repeat(str.length/str.length)+ str+ "_".repeat(str.length/str.length);
[out]: "_HP_"
str = "";
var result = "_".repeat(str.length/str.length)+ str+ "_".repeat(str.length/str.length);
[out]: ""
目的很简单,就是只有在String存在的时候才有下划线。
这在许多字符串与一个分隔符连接时非常有用,并且我们希望避免使用 If Else 块状代码。
有更短的形式吗?
【问题讨论】:
-
请显示输入和预期输出
-
str.length/str.length应该是什么原因?要么一直是1,要么导致“除以零”。 -
不是最佳代码,但可以完成工作:
"_".repeat(NaN)给出空字符串。至少在 Chrome JS 引擎 V 65.0 上运行时 -
用一个分隔符连接多个字符串同时避免 If Else 块的一种方法是:
[str1, str2, str3, ...].filter(str => str).join(SEPARATOR) -
@Curcuma_ 我认为你没有在这个 SO 问题中描述你的问题。您是在描述您的解决方案方法。如果您编辑问题并写下您的全部问题(这导致您需要“吸收”字符串的概念),我们或许可以为您提供更好的解决方案。
标签: javascript string concatenation