W JavaScript, jak bym utworzyć ciąg powtarzających się ciągów x ilość razy:Jak mogę powtarzać ciągi w JavaScript?
var s = new String(" ",3);
//s would now be " "
W JavaScript, jak bym utworzyć ciąg powtarzających się ciągów x ilość razy:Jak mogę powtarzać ciągi w JavaScript?
var s = new String(" ",3);
//s would now be " "
Nie ma takiej funkcji, ale hej, można go utworzyć:
String.prototype.repeat = function(times) {
return (new Array(times + 1)).join(this);
};
Zastosowanie:
var s = " ".repeat(3);
oczywiście można napisać to jako część autonomicznego grupy funkcji:
var StringUtilities = {
repeat: function(str, times) {
return (new Array(times + 1)).join(str);
}
//other related string functions...
};
Zastosowanie:
var s = StringUtilities.repeat(" ", 3);
nie Czy próbowałeś z pętlą
for (var i = 0; i < 3; i++) {
s += " "; }
?
Myślę, że najlepszym i jedynym sposobem na osiągnięcie tego jest zapętlenie łańcucha znaków. O ile mi wiadomo, nie ma takiej funkcji w żadnym języku.
function multiString(text, count){
var ret = "";
for(var i = 0; i < count; i++){
ret += text;
}
return ret;
}
var myString = multiString(" ", 3);
Ale domyślam się, że możesz to rozgryźć.
Perl ma operatora X, aby powtórzyć takie rzeczy - są też inne języki –
Wiem, że w pythonie i od rozwiązania poniżej możemy to zrobić za pomocą tablic i dołączyć. Ale nie uważam tych rozwiązań za funkcje. Nie wiem o operatorze X, ale obecnie nie jestem zaskoczony Perlem. Po tym jak zobaczyłem okresową tabelę operatorów dla perla. Nic mnie już nie zaskoczy. –
Można również użyć Array.join
:
function repeat(str, times) {
return new Array(times + 1).join(str);
}
> repeat(' ', 3)
" "
Oto zgrabny sposób, że nie obejmuje pętle. Oprócz zwięzłości, jestem całkiem pewny, że użycie join jest o wiele bardziej wydajne w przypadku bardzo dużych ciągów.
function repeat(str, num) {
return (new Array(num+1)).join(str);
}
Można również umieścić ten kod na prototypie String, ale jestem od myślenia, że to zły pomysł, aby bałagan z prototypem wbudowanych typów.
Wolę to rozwiązanie od mojego. Nie wiedziałem, że możemy dodać funkcjonalność do klasy String i ewentualnie do dowolnej klasy. –
Ahhh, odejdź z prototypowym rozszerzeniem ... –
@Sybiam - możesz, ale nie rób tego. Cóż, jeśli jest to coś uniwersalnie użyteczne, OK, ale coś w tym stylu, umieść je w bibliotece. – Malvolio