截断字符串JavaScript
Truncate a string JavaScript
我的任务是"截断字符串(第一个参数),如果它比给定的最大字符串长度(第二个参数)长。返回截断的字符串,并以…结尾。
请注意,在末尾插入三个点会增加字符串的长度。
然而,如果给定的最大字符串长度num小于或等于3,则在确定截断字符串时,三个点的相加不会增加字符串长度。"
我已经写了代码:
function truncateString(str, num) {
if (num > str.length){
str.slice(num);
return str.append("...");
}
else if (num < 3) {
str.slice(3);
return str.append("...");
}
else {
return "This is not a string";
}
}
truncateString("A-tisket a-tasket A green and yellow basket", 11);
然而,它并没有做我需要它做的事情,并且在每次运行时都会返回"这不是字符串"。有人能帮我吗?
我建议使用…
而不是...
,因为它是单个字符。
然后,
function truncate(str, max) {
return str.length > max ? str.substr(0, max-1) + '…' : str;
}
注意str.substr(0, -1)
返回空字符串。
正如@sh-ado-w上面所说,你应该改变你的条件,我认为这是你想要的。
function truncateString(str, num) {
if (num > str.length){
return str;
} else{
str = str.substring(0,num);
return str+"...";
}
}
res = truncateString("A-tisket a-tasket A green and yellow basket", 11);
alert(res)
"这不是字符串"是正确答案,为什么要这样?
function truncateString(str, num) {
if (num > str.length){ // if num is greater than string length (in you case 11 is not greater than 43
str.slice(num);
return str.append("...");
}
else if (num < 3) { // or if the num is less than 3 (11 is not less than 3)
str.slice(3);
return str.append("...");
}
else { // do if no if was matched (and here we are)
return "This is not a string";
}
}
因此,基本上,您需要在第一个if
中将>
更改为<
:)
编辑:
您想要的最后一个代码是(str.append()
不是函数):
function truncateString(str, num) {
if (num < str.length){
str.slice(num);
return str + "...";
}
else if (num < 3) {
str.slice(3);
return str + "...";
}
else {
return "This is not a string";
}
}
/*This is very late ....but this works. It is all about the boolean comparisons:*/
if (str.length>num && num >3){return str.slice(0, (num -3)) +"...";}
else if (num>3 || str.length<num){ return str.slice(0,num);}
else if (str.length>num || num<3){return str.slice(0, num) +"...";}
}
那些"简单任务"通常已经在主要的可靠库中解决了。他们处理这个问题已经很多年了,几乎没有经过测试:这意味着他们已经解决了你可能遇到的大多数问题。即使您不想使用库,查看代码也可能很有用。
除非你想通过练习来学习重写这种东西,否则你可能应该更好地使用Lodash-truncate():
_truncate("A-tisket a-tasket A green and yellow basket", {length: 11});
// 'A-tisket...'
repl.it.上的演示代码
如果字符串(第一个参数)大于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有…的截断字符串。。。结尾
function truncateString(str, num) {
if (str.length < num) return str;
var truncStr = str.slice(0, num);
var truncStrArr = truncStr.split(' ');
var truncStrArrLen=truncStrArr.length;
if(truncStrArrLen > 1 &&
truncStrArr[truncStrArrLen - 1] !== str.split(' ')[truncStrArrLen - 1]) {
truncStrArr.pop();
truncStr = truncStrArr.join(' ');
}
return str.length > num ? truncStr + '...' : truncStr;
}
console.log(truncateString("A-tisket a-tasket A green and yellow basket", 11));
这是我的解决方案:
function truncateString(str, num) {
if (str.length <= num) {
return str;
} else {
return str.slice(0, num > 3 ? num - 3 : num) + '...';
}
}
的工作原理
function truncateString(str, num) {
// Clear out that junk in your trunk
var st='';
if(num>=str.length)
{
return str;
}
else
if(num<str.length&&num>3)
{st=str.slice(0,num-3);
return st+'...';
}
else
if(num<=3){
st = str.slice(0,num);
return st+"...";
}
}
truncateString("A-", 1);
您可以使用以下函数参数str:要截断的字符串,firstCharCount:要在第一部分中显示的字符数,endCharCount:要在结尾部分显示的字符数,dotsCount:介于两者之间的点数。
示例truncStringPartition("ID卡号为101010",2,6,3)输出"ID…101010"
function truncStringPortion(str, firstCharCount = str.length, endCharCount = 0, dotCount = 3) {
var convertedStr="";
var dotsAdded=false;
for(var i = 0; i < str.length; i++) {
if(i < firstCharCount) {
convertedStr += str.charAt(i);
}
else if(!dotsAdded){
convertedStr += ".".repeat(dotCount);
dotsAdded=true;
}
else if(i > (str.length - endCharCount - 1)) {
convertedStr += str.charAt(i);
}
}
return convertedStr;
}
使用ES6语法使其更短、更整洁:
const truncateStr = (str, num) => (num > str.length) ? str : `${str.substring(0, nm)}...`;
- 可变大小的JavaScript字符串如何成为基元类型
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何使用gump任务将html转换为javascript字符串
- 替换变量时,JavaScript字符串replace()不起作用
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 如何从django中的url解析javascript字符串
- 拆分javascript字符串以获得所需的值
- 使用Bootstrap'在Javascript字符串中的popover插件
- 如何替换javascript字符串中的前三个连字符
- 将JavaScript字符串转换为整数
- jquery/javascript字符串中的撇号
- 正在对java中的javascript字符串进行转义
- 如何在Javascript字符串中添加vaule
- Javascript:字符串中有效的基于数组的替换
- 具有负值的Javascript字符串.slice()
- javascript字符串替换$1(如果它是某个值)
- 将子函数的JavaScript字符串转换为实际函数
- JavaScript字符串中的换行符也保存为.txt
- 将Javascript字符串var传递给HTML href标记
- JavaScript 字符串字母和数字检查