str_repeat()
Синтаксис:
str_repeat (string_name, repeat)
Поддерживается следующими версиями PHP:
Описание функции:
Функция str_repeat () возвращает повторение строки заданное количество раз.
Обязательный аргумент. Строка
Обязательный аргумент. Аргумент определяет сколько раз следует повторить строку ( string_name ). Должен быть больше или равен нулю. Если равен нулю, то возвращается пустая строка.
Строение повторяющихся строк с пробелами между повторами
0 Josh [2013-02-24 03:49:00]
repeat принимает число и строку и возвращает строку, повторяющуюся n раз, разделенную пробелом.
Как бы я добавил пространство, чтобы он мог дать мне «домашний дом»?
2 ответа
2 Решение Óscar López [2013-02-24 03:52:00]
Добавьте пробел в строку str в конце, прежде чем передавать его для replicate :
Это даст дополнительное пространство в конце, если вы хотите избавиться от него, как @Tobia предлагает:
1 uselpa [2013-02-24 12:38:00]
У Racket есть встроенная функция string-join для этого, поэтому в простой Racket это будет
PHP | Функция str_repeat ()
Функция str_repeat () является встроенной функцией в PHP и используется для создания новой строки, повторяя данную строку фиксированное число раз. Он принимает строку и целое число в качестве аргументов и возвращает новую строку, которая генерируется путем повторения строки, переданной в качестве аргумента, количество раз, определенное целым числом, переданным в качестве аргумента этой функции.
Синтаксис :
Параметры : эта функция принимает два параметра, и оба они обязательны для передачи.
- $ string : этот параметр представляет строку для повторения
- $ no_of_times : этот параметр представляет число, обозначающее количество повторений параметра $ string. Этот параметр должен быть больше или равен нулю.
Возвращаемое значение : эта функция возвращает новую строку, составленную путем повторения заданной строки $ string заданное количество раз. Если параметр $ no_of_times, переданный функции, равен 0, то функция возвращает пустую строку.
Ниже программы иллюстрируют функцию str_repeat () в PHP:
Программа — 1 :
Как использовать str_repeat для повторения строки из массива, дающей индекс каждого цикла str_repeat
Я пытаюсь объединить ключи массива (которые изначально являются свойствами класса). Итак, что я сделал, это:
Вот как я получаю AddressPark имена свойств объекта.
Я хочу получить доступ к свойствам объекта по индексу, поэтому я использовал array_keys.
streetAddress_1, streetAddress_1, streetAddress_1, COUNTRY_NAME
Повторяется $arr[0] = ‘streetAddress_1’ что нормально, потому что в каждом цикле str_repeat индекс $arr является $count-$count = 0 ,
Так что я точно хочу str_repeat для каждого цикла это выглядит так: $count-($count-0),$count-($count-1) … $count-($count-4) , Без использования какого-либо другого цикла для увеличения значения от (0 до 4).
Так есть ли другой способ сделать это?
Решение
Нет, вы не можете использовать str_repeat Функция непосредственно для копирования каждого значения из массива в строку. Однако есть много способов добиться этого, наиболее популярным из которых является implode() а также array_keys функции.
array_keys извлекает ключи из массива. Следующие примеры будут сосредоточены исключительно на другой части проблемы, которая заключается в объединении значений массива.
взрываться
взрываться : Объединить элементы массива строкой
Для каждого
для каждого : Конструкция foreach обеспечивает простой способ перебора массивов, объектов или перемещаемых объектов.
Обратите внимание, что в этой версии у нас есть лишняя запятая
Список
список : Назначить переменные, как если бы они были массивом
Обратите внимание, что в этой версии вы должны знать, сколько значений вы хотите иметь дело.
Array Reduce
array_reduce : Итеративно уменьшать массив до одного значения, используя функцию обратного вызова
Этот метод также приводит к появлению лишней запятой.
В то время как
в то время как : циклы while — это самый простой тип цикла в PHP.
Обратите внимание, что мы обработали ошибочную запятую в цикле. Этот метод разрушителен, поскольку мы изменяем исходный массив.
Sprintf и String Repeat
Sprintf : Моя лучшая попытка на самом деле использовать str_repeat функция:
Обратите внимание, что это использует восклицательный знак оператор . распаковать массив в качестве аргументов для sprintf функция.
Очевидно, что многие из этих примеров не являются лучшими или самыми быстрыми, но иногда полезно думать нестандартно.
Вероятно, есть еще много способов, и я могу думать о большем; используя итераторы массива, такие как array_walk , array_map , iterator_apply а также call_user_func_array используя указанную переменную.
Если вы можете придумать еще что-нибудь, оставьте комментарий ниже
str_repeat
str_repeat — Возвращает повторяющуюся строку
Описание
Возвращает строку input , повторенную multiplier раз.
Список параметров
Количество раз, которые нужно повторить строку input .
multiplier должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка.
Возвращаемые значения
Возвращает повторяющуюся строку.
Примеры
Пример #1 Пример использования str_repeat()
Результат выполнения данного примера:
Смотрите также
- for
- str_pad() — Дополняет строку другой строкой до заданной длины
- substr_count() — Возвращает число вхождений подстроки
Коментарии
str_repeat does not repeat symbol with code 0 on some (maybe all?) systems (tested on PHP Version 4.3.2 , FreeBSD 4.8-STABLE i386 ).
Use to have string filled with zero-symbols.
Here is a shorter version of Kees van Dieren’s function below, which is moreover compatible with the syntax of str_repeat:
function str_repeat_extended ( $input , $multiplier , $separator = » )
<
return $multiplier == 0 ? » : str_repeat ( $input . $separator , $multiplier — 1 ). $input ;
>
?>
Here is a simple one liner to repeat a string multiple times with a separator:
( $separator , array_fill ( 0 , $multiplier , $input ));
?>
Example script:
// How I like to repeat a string using standard PHP functions
$input = ‘bar’ ;
$multiplier = 5 ;
$separator = ‘,’ ;
print implode ( $separator , array_fill ( 0 , $multiplier , $input ));
print «\n» ;
// Say, this comes in handy with count() on an array that we want to use in an
// SQL query such as ‘WHERE foo IN (. )’
$args = array( ‘1’ , ‘2’ , ‘3’ );
print implode ( ‘,’ , array_fill ( 0 , count ( $args ), ‘?’ ));
print «\n» ;
?>
Example Output:
bar,bar,bar,bar,bar
.
» , 35 );
echo $my_head ;
?>
so , the length should be 35×2 = 70 .
if we echo it :
» , 35 );
echo strlen ( $my_head ); // 105
echo mb_strlen ( $my_head , ‘UTF-8’ ); // 70
?>
be carefull with characters and try to use mb_* package to make sure everything goes well .
Damien Bezborodov , yeah but execution time of your solution is 3-5 times worse than str_replace.
function spam ( $number ) <
return str_repeat ( ‘test’ , $number );
>
function spam2 ( $number ) <
return implode ( » , array_fill ( 0 , $number , ‘test’ ));
>
//echo spam(4);
$before = microtime ( true );
for ( $i = 0 ; $i 100000 ; $i ++) <
spam ( 10 );
>
echo microtime ( true ) — $before , «\n» ; // 0.010297
$before = microtime ( true );
for ( $i = 0 ; $i 100000 ; $i ++) <
spam2 ( 10 );
>
echo microtime ( true ) — $before ; // 0.032104
Str_repeat — Возвращает повторяющуюся строку
Это, как я получаю AddressPark имена свойств объекта.
Я хочу, чтобы получить доступ к свойствам объекта по индексу, поэтому я использовал array_keys.
streetAddress_1, streetAddress_1, streetAddress_1, COUNTRY_NAME
Она повторяет $arr[0] = ‘streetAddress_1’ это нормально , потому что в каждом цикле из str_repeat индекса $arr является $count-$count = 0 . Так что я точно хочу str_repeat сделать это для каждого цикла она идет , как: $count-($count-0),$count-($count-1) . $count-($count-4) . Без использования какой — либо другой цикл , чтобы увеличить значение из ( от 0 до 4).
Так есть еще один способ сделать это?
Нет, вы не можете использовать str_repeat функцию непосредственно копировать каждое из значений из массива в строку. Однако существует много способов для достижения этой цели, с наиболее популярными являются implode() и array_keys функцией.
array_keys извлекает ключи из массива. Следующие примеры будут исключительно сосредоточиться на другой части вопроса, который должен объединить значение массива.
взрываться
взрывать : Объединяет элементы массива в строку
Для каждого
Еогеасп : Конструкция Еогеаспа обеспечивает простой способ для перебора массивов, объектов или traversables.
Обратите внимание на то, что в этой версии есть лишняя запятая, чтобы иметь дело с
Список
список : Назначение переменных , как если бы они были массивом
Обратите внимание, что на этой версии вы должны знать, сколько значений вы хотите иметь дело с.
Массив Уменьшить
array_reduce : Итеративно уменьшить массив к единственному значению , используя функцию обратного вызова
Этот метод также вызывает дополнительная запятая появляться.
В то время как
в то время : в то время как петли простейшего типа цикла в PHP.
Обратите внимание на то, что мы справились с ошибочной запятой в цикле. Этот метод является разрушительным, как мы изменяем исходный массив.
Sprintf и строка Повторить
Sprintf : Моя лучшая попытка на самом деле с помощью str_repeat функции:
Обратите внимание на то, что это использует пейнтбольный оператор . распаковать массив в качестве аргумента для sprintf функции.
Очевидно, что многие из этих примеров не самые лучшие или самые быстрые, но это хорошо, чтобы думать из коробки иногда.
Там, наверное , еще много способов , и я могу на самом деле думаю , что больше; используя итераторы массива , как array_walk , array_map , iterator_apply и , call_user_func_array используя переменный ссылаются.
Если вы можете думать больше оставить комментарий ниже
Linux.yaroslavl.ru
| |||||||||
str_repeat — повторяет строку. Описаниеstring str_repeat (string input, int multiplier) Возвращает input_str , повторённую multiplier раз. Str_repeat — Возвращает повторяющуюся строкуstr_repeat — Возвращает повторяющуюся строку Описание string str_repeat ( string input, int multiplier )
Возвращает строку input_str , повторенную multiplier раз. multiplier должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка. Пример 1. Пример использования str_repeat()
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту: Простой способ повторить строку в javaЯ ищу простой метод или оператор commons, который позволяет мне повторять несколько строк n раз. Я знаю, что я мог бы написать это, используя цикл for, но я бы хотел, чтобы избежать циклов, когда это необходимо, и простой простой метод должен существовать где-то. Связано с: Edited Я стараюсь избегать циклов, когда они не являются полностью необходимыми, потому что: Они добавляют к числу строк кода, даже если они спрятаны в другой функции. Кто-то, читающий мой код, должен выяснить, что я делаю в этом цикле. Даже если он прокомментирован и имеет значащие имена переменных, им все равно нужно убедиться, что он не делает ничего «умного». Программисты любят вкладывать умные вещи в циклы, даже если я пишу это, чтобы «делать то, что он должен делать», что не мешает кому-то прийти и добавить дополнительное умное «исправление». Они очень часто ошибаются. Для циклов, включающих индексы, имеют тенденцию генерировать один баг. Для циклов часто повторяются одни и те же переменные, что увеличивает вероятность очень трудно найти ошибки. Для циклов увеличивайте количество мест, в которых должен выглядеть искатель ошибок. String::repeatВ Java 11 появился метод String::repeat , который делает именно то, что вы просили: Вот кратчайшая версия (требуется Java 1.5+): Где n — это количество раз, когда вы хотите повторить строку, а s — это строка, которую нужно повторить. Импорт или библиотеки не требуется. Если вы используете Java & lt; = 7, это так просто: В Java 8 и выше есть простой способ: Java 11 добавил новый метод repeat(int count) специально для этого (ссылка) Java 8 String.join обеспечивает удобный способ сделать это в сочетании с Collections.nCopies : Здесь вы можете сделать это, используя только стандартные функции String и явные петли: Если вы похожи на меня и хотите использовать Google Guava, а не Apache Commons. Вы можете использовать метод repeat в классе Guava Strings. С java-8, вы также можете используйте Stream.generate . и при необходимости вы можете поместить его в простой служебный метод: Итак, вы хотите избежать циклов? Здесь у вас есть: (конечно, я знаю, что это уродливое и неэффективное, но оно не имеет циклов: -p) Вы хотите, чтобы это было проще и красивее? использовать jython: Изменить: немного оптимизируйте его: -D Edit2. Я сделал быстрый и грязный тест для 4 основных альтернатив, но у меня нет времени на его запуск несколько раз, чтобы получить средства и построить время для нескольких входов. Итак, вот код, если кто-то хочет попробовать: Требуется 2 аргумента, первое — количество итераций (каждая функция запускается с периодом повторения arg от 1..n), а вторая — это строка для повторения. До сих пор быстрый просмотр времени, выполняющегося с разными входами, оставляет рейтинг чем-то вроде этого (лучше хуже):
3x). 30x). Я бы никогда не догадался, что рекурсивная функция работает быстрее, чем цикл for : -o Удачи (ctional xD). Это содержит меньше символов, чем ваш вопрос на основе ответа fortran, это повторяющаяся версия, которая использует StringBuilder: с помощью Dollar прост, как печатать: PS: repeat работает также для массива, списка, набора и т.д. Я хотел, чтобы функция создавала список вопросительных знаков с разделителями-запятыми для целей JDBC и нашла это сообщение. Итак, я решил взять два варианта и посмотреть, какой из них лучше. После 1 миллиона итераций садовое разнообразие StringBuilder заняло 2 секунды (fun1), а загадочная предположительно более оптимальная версия (fun2) заняла 30 секунд. Какой смысл снова быть загадочным? Решение ООППочти каждый ответ предлагает статическую функцию как решение, но, думая об объектно-ориентированном (для целей повторного использования и ясности), я придумал решение через делецию через CharSequence-Interface (что также открывает удобство использования изменчивого CharSequence- Классы). Следующий класс можно использовать либо с разделителем-строкой/CharSequence, либо без него, и каждый вызов toString() «создает финальную повторяющуюся строку. Вход/Сепаратор не ограничивается только String-Class, но может быть любым классом, который реализует CharSequence (например, StringBuilder, StringBuffer и т.д.)! Источник-код:Использование-Пример:Пример-выход:используя только классы JRE (System.arraycopy) и пытается свести к минимуму количество объектов temp, которые вы можете напишите что-нибудь вроде: ИЗМЕНИТЬ и без циклов вы можете попробовать: РЕДАКТИРОВАТЬ 2 с помощью Collections еще короче: однако мне все еще нравится первая версия. Если вы беспокоитесь о скорости, вы должны использовать как можно меньше памяти. Таким образом, требуется работать с массивами символов. Для проверки скорости аналогичный оптимальный метод с использованием StirngBuilder выглядит следующим образом: и код для его проверки: И вот результаты выполнения моей системы: Обратите внимание, что тест для цикла должен начинаться с JIT и иметь оптимальные результаты. Не самый короткий, но (я думаю) самый быстрый способ использовать StringBuilder: для удобства чтения и переносимости: Если вас беспокоит производительность, просто используйте StringBuilder внутри цикла и сделайте .toString() при выходе из цикла. Черт, напишите свой собственный класс Util и повторите его использование. 5 Линии кода max. Мне очень нравится этот вопрос. Существует много знаний и стилей. Поэтому я не могу оставить его, не показывая свою рок-н-ролл;) Используя рекурсию, вы можете сделать следующее (используя тройные операторы, одна строка max): Я знаю, это уродливо и, вероятно, неэффективно, но это одна строка! Несмотря на ваше желание не использовать циклы, я думаю, вы должны использовать цикл. Ваши причины не использовать цикл for не являются хорошими. В ответ на ваши критические замечания:
вот последняя версия Stringutils.java StringUtils.java он даже не должен быть таким большим, можно сделать это, и его можно скопировать и вставить в класс утилиты в вашем проекте. Итак, e5, я думаю, что лучший способ сделать это — просто использовать вышеупомянутый код или любой из ответов здесь. но commons lang слишком велик, если это небольшой проект Str_repeatPhp функцииPhp скриптыstr_repeatstr_repeat — Возвращает повторяющуюся строку Описаниеstring str_repeat ( string input, int multiplier ) Возвращает строку input_str , повторенную multiplier раз. multiplier должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка. Пример 1. Пример использования str_repeat()
|
User Contributed Notes
In reply to what Roland Knall wrote:
It is much simpler to use printf () or sprintf () for leading zeros.
printf ( «%05d \n» , 1 ); // Will echo 00001 sprintf ( «%05d \n» , 1 ); // Will return 00001 ?> |
21-Jul-2003 09:45
str_repeat does not repeat symbol with code 0 on some (maybe all?) systems (tested on PHP Version 4.3.2 , FreeBSD 4.8-STABLE i386 ).
Use to have string filled with zero-symbols.
abodeman at enoughspamalready dot yahoo dot com
28-May-2003 01:35
Recursive functions are almost always slower than the corresponding iterative all.php?act=funct&argument= Therefore, dmarsh’s function will be faster than Gail’s.
Gal Chen
18-Mar-2003 06:18
a response to dmarsh
if u do wanna write a function that fills a string to a length its best to use a recoursive function
function str_repeattolength ( $str , $length ) <
$str length = strlen ( $str );
if ( $str length >= $length ) <
return substr ( $str ,0, $length );
> else <
return $str . str_repeattolength( $str , $length — $str length );
>
>
or just use str_pad
bob at bobarmadillo dot com
21-Nov-2002 03:26
While dmarsh’s function is nice it duplicates the function str_pad().
str_repeat is good when you want the entire string repeated.
For instance, if you want to put 6 ‘s in somewhere, str_pad will cut it off at odd places whereas str_repeat will return 6 full  ’s.
the following will return the same result as dmarsh’s code.
$t = «-=-«;
print str_pad(»,0, $t ).»\n»;
print str_pad(»,1, $t ).»\n»;
print str_pad(»,2, $t ).»\n»;
. etc.
dmarsh dot NO dot SPAM dot PLEASE at spscc dot ctc dot edu
18-Sep-2002 03:15
If you need an alternate str_repeat function that outputs an exact length using a particular input string to fill that length (as opposed to repeating the input string), try this little gem:
// use this function:
function str_repeat 2 ( $i nput , $length ) <
// returns the output exactly $length using $i nput to fill that length
$answer = «» ;
//demo the function’s use:
$t = «-=-» ;
print str_repeat2 ( $t , 0 ). «\n» ;
print str_repeat2 ( $t , 1 ). «\n» ;
print str_repeat2 ( $t , 2 ). «\n» ;
print str_repeat2 ( $t , 3 ). «\n» ;
print str_repeat2 ( $t , 4 ). «\n» ;
print str_repeat2 ( $t , 5 ). «\n» ;
print str_repeat2 ( $t , 6 ). «\n» ;
?>
dakota at dir dot bg
25-Jun-2002 02:06
Note that the first argument is parsed only once, so it’s impossible to do things like this:
echo str_repeat(++ $i , 10);
The example will produce 10 times the value of $i +1, and will not do a cycle from $i to $i +10.
bryantSPAMw at geocities dot SPAM dot com
25-Oct-2001 03:16
( For the benefit of those searching the website:)
This is the equivalent of Perl’s «x» (repetition) operator, for eg. str_repeat («blah», in PHP does the same thing as «blah» x 8 in Perl.