在Javascript中截断一个字符串,混淆了最后两个测试字符串
Truncating a string in Javascript, confusion of last two test strings
我正在为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;
- Mocha js测试字符串不相等时不显示diff
- 无法从量角器测试中元素的值返回字符串
- 以字符串形式读取量角器测试中的更新输入
- 测试字符串中的多个单词
- 在Javascript中截断一个字符串,混淆了最后两个测试字符串
- 测试字符串在 javascript 中是否具有时区
- 如何测试只包含字母字符和短划线(-)[javascript]的字符串
- 使用正则表达式测试字符串中的特定ASCII字符
- 根据Javascript中的RegEx模式测试字符串
- 如何在javascript中测试字符串是否包含带正则表达式的数字
- 如何简化针对多个正则表达式的字符串测试
- 字符串测试失败
- 如何测试字符串是否有效日期是否使用时刻
- 使用 for 循环中的函数测试字符串时,我一直陷入无限循环
- 正则表达式,用于测试字符串是否包含超过 X 个单词
- Javascript:快速字符串测试
- 如何编写一个测试来验证函数是否已成功将字符串列表(在数组中指定)打印到屏幕上
- JavaScript 字符串测试与正则表达式数组
- 根据字符串测试子字符串数组
- 如何使用字符串测试JS库是否已加载