我有一个字符串15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt
,我想让它看起来像15.Prototypal...-Slider.txt
文字length
为56
,如何保留前12个字母和10个最后字母(包含标点符号)并将其他字母替换为...
我真的不知道如何启动代码,我做了类似的事情
var str="15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt";
str.split("// ",1);
虽然这给了我所需要的东西,但我怎么能把结果基于字母而不是单词。
答案 0 :(得分:6)
您可以使用str.slice()。
function middleEllipsis(str, a, b) {
if (str.length > a + b)
return str.slice(0, a) + '...' + str.slice(-b);
else
return str;
}
middleEllipsis("15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt", 12, 10);
// "15.Prototypa...Slider.txt"
middleEllipsis("mpchc64.mov", 12, 10);
// "mpchc64.mov"
答案 1 :(得分:2)
此功能可满足您的要求:
function fixString(str) {
var LEN_PREFIX = 12;
var LEN_SUFFIX = 10;
if (str.length < LEN_PREFIX + LEN_SUFFIX) { return str; }
return str.substr(0, LEN_PREFIX) + '...' + str.substr(str.length - LEN_SUFFIX - 1);
}
您可以根据需要调整LEN_PREFIX和LEN_SUFFIX,但我有你在帖子中指定的值。您还可以通过为函数创建前缀和后缀长度输入参数来使函数更通用:
function fixString(str, prefixLength, suffixLength) {
if (str.length < prefixLength + suffixLength) { return str; }
return str.substr(0, prefixLength) + '...' + str.substr(str.length - suffixLength - 1);
}
答案 2 :(得分:1)
我想让它看起来像 15.Prototypal ...- Slider.txt
的 LIVE DEMO 强>
无论后缀和前缀文本有多长,都可以获得所需:
var str = "15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt",
sp = str.split('-'),
newStr = str;
if(sp.length>1) newStr = sp[0]+'...-'+ sp.pop() ;
alert( newStr ); //15.Prototypal...-Slider.txt
将字符串拆分为-
并使用.pop()
方法从拆分的字符串中检索最后一个数组值。
不是将字符串拆分到某个定义的位置,它还会处理如下字符串:
11.jQuery-infinite-loop-a-Gallery.txt
返回:
11.jQuery ...- Gallery.txt
答案 3 :(得分:0)
这是另一种选择。请注意,这会保留前13个字符和最后11个字符,因为这是您在示例中给出的内容。
var shortenedStr = str.substr(0, 13) + '...' + str.substring(str.length - 11);
答案 4 :(得分:-1)
您可以使用javascript substring命令找出您想要的内容。
如果你的字符串总是56个字符,你可以这样做:
var str="15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt";
var newstr = str.substring(0,11) + "..." + str.substring(45,55)
如果你的字符串长度不一,我强烈建议先找到字符串的长度,然后再做子字符串。