【问题标题】:Create an absorbing String in Javascript在 Javascript 中创建一个吸收字符串
【发布时间】: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


【解决方案1】:

您可以使用logical AND && 来检查truthyness 的字符串。

function pad(string) {
    return string && '_' + string + '_';
}

console.log(pad("HP"));
console.log(pad(""));

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2014-05-26
    • 2019-04-24
    相关资源
    最近更新 更多