在Javascript中截断一个字符串,混淆了最后两个测试字符串

Truncating a string in Javascript, confusion of last two test strings

本文关键字:字符串 测试 两个 最后 一个 Javascript      更新时间:2023-09-26

我正在为freecodecamp做一个项目。

项目规则:

如果字符串(第一个参数)比给定的最大字符串长度(第二个参数)长,则截断该字符串。返回带有…的截断字符串。。。结尾

请注意,在末尾插入三个点会增加字符串的长度。

然而,如果给定的最大字符串长度num小于或等于3,则在确定截断字符串时,三个点的相加不会增加字符串长度。

我的测试字符串包括:

CCD_ 1应当返回"0";A-tisket&";。

CCD_ 2应当返回"0";彼得·派珀&";。

CCD_ 3应当返回"0";一个绿色和黄色的篮子;。

CCD_ 4应当返回"0";一个绿色和黄色的篮子;。

CCD_ 5应当返回"0";A;。

CCD_ 6应当返回"0";Ab…";。

现在,我已经使用ternary运算符解决了大部分问题,所以它相当简单,除了最后两个('A-', 1)('Absolutely Longer', 2),我的问题是,如何成功完成截断并返回最后两个字符串的预期输出?

来源:

function truncateString(str, num) {
  return str.length > num ? str.slice(0, num - 3) + '...' : str;
}

您需要处理truncateString("A-tisket a-tasket A green and yellow basket", 11)0小于或等于3的情况。你可以添加另一个条件:

function truncateString(str, num) {
  return str.length > num ? str.slice(0, num >= 3 ? num - 3 : num) + '...' : str;
}
console.log(truncateString("A-tisket a-tasket A green and yellow basket", 11));
console.log(truncateString("Peter Piper picked a peck of pickled peppers", 14));
console.log(truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length));
console.log(truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2));
console.log(truncateString("A-", 1));
console.log(truncateString("Absolutely Longer", 2));

我注意到2018年的任务略有变化:如果字符串(第一个参数)比给定的最大字符串长度(第二个参数)长,则截断该字符串。返回带有…的截断字符串。。。结尾

解决方案是:

function truncateString(str, num) {
  // Clear out that junk in your trunk
  if (str.length > num) { 
    return str.slice(0, num) + '...';
  } else {
    return str; 
  }
}
truncateString("A-tisket a-tasket A green and yellow basket", 8);

说明:首先,我们检查字符串中的字母数是否大于给定的数字。如果是这样的话,我们把字符串的第一部分剪掉,然后加上"…"我们从第一个字母(0)开始去掉给定数量的字母。

类似这样的东西:

function truncateString(str, num) {
  var result = str;
  if(str.length - 3 > num) {
    result = str.length > num ? str.slice(0, num - 3) + '...' : str;
  }
  return result;
}
truncateString("A-", 1)
// "A-"
truncateString("A-tisket a-tasket A green and yellow basket", 11)
// "A-tisket..."

这会有所帮助。虽然不完美,但可以工作,对于理解的初学者来说应该很容易

function truncateString(str, num) {
        var res = "";
        if (str.length > num) {
          if (num > 3) {
            res = str.slice(0, num - 3) + "...";
          } else {
            res = str.slice(0, num) + "...";
          }
          return res;
        }
        return str;
      }
      truncateString("A-tisket a-tasket A green and yellow basket", 11);

我对这个问题的简短解决方案。

const truncateString = (str, num) => str.length > num ? 
                                     str.substr(0, num) + "..." : 
                                     str;