str_repeat — Возвращает повторяющуюся строку


str_repeat()

Синтаксис:

str_repeat (string_name, repeat)

Поддерживается следующими версиями PHP:

Описание функции:

Функция str_repeat () возвращает повторение строки заданное количество раз.

string_name

Обязательный аргумент. Строка

string 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 и используется для создания новой строки, повторяя данную строку фиксированное число раз. Он принимает строку и целое число в качестве аргументов и возвращает новую строку, которая генерируется путем повторения строки, переданной в качестве аргумента, количество раз, определенное целым числом, переданным в качестве аргумента этой функции.

Синтаксис :

Параметры : эта функция принимает два параметра, и оба они обязательны для передачи.

  1. $ string : этот параметр представляет строку для повторения
  2. $ 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 должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка.

Илон Маск рекомендует:  Блочная модель в CSS

Возвращаемые значения

Возвращает повторяющуюся строку.

Примеры

Пример #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 раз.
multiplier должен быть больше или равен 0. Если multiplier равен 0, функция возвратит пустую строку.

Str_repeat — Возвращает повторяющуюся строку

str_repeat — Возвращает повторяющуюся строку

Описание string str_repeat ( string input, int multiplier )

Возвращает строку input_str , повторенную multiplier раз. multiplier должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка.

Пример 1. Пример использования str_repeat()

echo str_repeat ( «-=» , 10 );
?>

Пред. Начало След.
str_pad Уровень выше str_replace

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

Простой способ повторить строку в 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), а вторая — это строка для повторения.

До сих пор быстрый просмотр времени, выполняющегося с разными входами, оставляет рейтинг чем-то вроде этого (лучше хуже):

  • Iterative StringBuilder добавляет (1x).
  • Рекурсивные конкатенации log2-вызовы (

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 не являются хорошими. В ответ на ваши критические замечания:

  • Независимо от того, какое решение вы используете, почти наверняка будет длиннее этого. Использование предварительно созданной функции только замаскирует ее под большим количеством обложек.
  • Кто-то, читающий ваш код, должен будет выяснить, что вы делаете в этом не-for-loop. Учитывая, что for-loop является идиоматическим способом сделать это, было бы намного легче понять, если вы сделали это с циклом for.
  • Да кто-то может добавить что-то умное, но, избегая цикла for, вы делаете что-то умное. Это, как стрелять себе в ногу преднамеренно, чтобы случайно не стрелять в ногу.
  • Ошибки по очереди могут быть легко улавливаемы с помощью одного теста. Учитывая, что вы должны тестировать свой код, следует легко устранить ошибку, которая может быть исправлена ​​и уловлена. И это стоит отметить: в приведенном выше коде не содержится ошибка «один за другим». Для петель одинаково легко получить право.
  • Поэтому не используйте повторно переменные. Это не ошибка для цикла.
  • Опять же, как и любое решение, которое вы используете. И как я уже отмечал; охотник за ошибками, вероятно, ожидает, что вы сделаете это с циклом for, так что им будет легче найти его, если вы используете цикл for.

вот последняя версия Stringutils.java StringUtils.java

он даже не должен быть таким большим, можно сделать это, и его можно скопировать и вставить в класс утилиты в вашем проекте.

Итак, e5, я думаю, что лучший способ сделать это — просто использовать вышеупомянутый код или любой из ответов здесь. но commons lang слишком велик, если это небольшой проект

Str_repeat

Php функции


Php скрипты


str_repeat

str_repeat — Возвращает повторяющуюся строку

Описание

string str_repeat ( string input, int multiplier )

Возвращает строку input_str , повторенную multiplier раз. multiplier должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка.

Пример 1. Пример использования str_repeat()

echo str_repeat ( «-=» , 10 );
?>

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 &nbsp’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», 8) in PHP does the same thing as «blah» x 8 in Perl.

Илон Маск рекомендует:  Как написать чат или практика работы с winsock
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL