有一个很好的函数/ lib等缩短很好一个字符串(比如ios圈子联系但更多的进化)?
例如:
我真的可以自己写每个可以看到的情况,但我正在寻找一些不错的东西,也许更多聪明那个我的例子(省略文章了解更多超过3个单词,如果超过3个单词等,则省略短划线。)。
精确度:好看是我的问题。我正在寻找像stringjs.com/underscorejs(normalize,capitalize,slugify ......)这样的库或者一个简单的函数但是有一个很好的缩短方法。
目前,我使用这段代码(更新w / terabaud回答,thx dude):
function shortener(label) {
//http://www.ranks.nl/stopwords
var stopWords = "alors au aucuns aussi autre avant avec avoir bon car "
+ "ce cela ces ceux chaque ci comme comment dans des du "
+ "dedans dehors depuis deux devrait doit donc dos droite "
+ "début elle elles en encore essai est et eu fait faites "
+ "fois font force haut hors ici il ils je juste la le les "
+ "leur là ma maintenant mais mes mine moins mon mot même "
+ "ni nommés notre nous nouveaux ou où par parce parole "
+ "pas personnes peut peu pièce plupart pour pourquoi quand "
+ "que quel quelle quelles quels qui sa sans ses seulement "
+ "si sien son sont sous soyez sujet sur ta tandis tellement "
+ "tels tes ton tous tout trop très tu valeur voie voient "
+ "vont votre vous vu ça étaient état étions été être";
var articles = stopWords.split(' ');
return (label || "")
.replace(/[A-Z]/g, " $&") // add space before each capital
.replace(/[_\-']/g, " ") // replace _ - with spaces
.split(" ")
.filter(function (word) {
return word !== ""
})
.map(function (word, idx, arr) {
// return the first letter of each word
// if there are more than 2 words, omit articles
return (arr.length > 2 && articles.indexOf(word.toLowerCase()) > -1) ? "" : word[0];
}).join("").slice(0, 3);
};
["John Doe", "My board", "Something very long", "My Very long board", "Dash-board", "title", "Title", "JohnDoe","avec unwanted Words", "John_Doe"].forEach(function(str) {
document.body.innerHTML += shortener(str) + '<br>';
});
答案 0 :(得分:1)
我会按顺序使用正则表达式:
答案 1 :(得分:1)
没有简单的方法可以做到这一点。尝试这样的事情:
var articles = ["the", "a", "an"];
function shorten(str) {
return (str || "")
.replace(/[A-Z]/g, " $&") // add space before each capital
.replace(/[_\-]/g, " ") // replace _ - with spaces
.split(" ")
.filter(function (word) { return word !== "" })
.map(function(word, idx, arr) {
// return the first letter of each word
// if there are more than 3 words, omit articles
return arr.length > 3 &&
articles.indexOf(word.toLowerCase()) > -1 ?
"" : word[0];
}).join("").slice(0, 3);
}
["John Doe", "My board",
"Something very long",
"My Very long board",
"Dash-board",
"title",
"Title",
"JohnDoe",
"John_Doe"].forEach(function(title) {
document.body.innerHTML += shorten(title) + '<br>';
});
&#13;
答案 2 :(得分:1)
我不确定这是不是你想要的:请在下面评论
"My Very Long Board".split(' ').map(function(word){
return word[0];
}).join('').slice(0, 3)
答案 3 :(得分:0)
如何在存储indexOf
的变量上使用String
来查找:
空格,大写字母或破折号的前三个实例。
这三个字母会给你一个很好的缩短。