regex может сделать это быстрее?

Я хочу использовать для своей выгоды каждое слово и объединить его в 1 слово, например:

разместите = Домой
о - нас = AboutUs

Вот функция, которую я использую в данный момент, regex может сделать это лучше или более эффективный?

public function formatClassName($name)
{
 $name = str_replace('-', ' ', $name);
 $name = ucwords($name);
 $name = str_replace(' ', '', $name);
 return $name;
}
11
задан Gumbo 3 February 2010 в 17:16
поделиться

3 ответа

Я не думаю, что регекс может писать слова с заглавной буквы, так что вам все равно придется иметь два отдельных регекса, и я думаю, что в таких простых случаях регулярные выражения - это перебор (думаю, охотничьи белочки с артиллерией). Этот код прост, понятен и понятен. НЕ ТРОГАЙТЕ ЕГО!

29
ответ дан 3 December 2019 в 01:08
поделиться

С регулярным выражением вам, вероятно, придется использовать что-то «сложное», например preg_replace_callback (чтобы можно было применить strtoupper или ucwords function) , что сделало бы ваш код, по крайней мере, труднее для понимания - и, возможно, медленнее, но самое главное, чтобы ваш код был легким для понимания.

Учитывая, что ваше решение просто работает, оно простое и легкое , я бы, вероятно, оставил его, если бы был на вашем месте.

12
ответ дан 3 December 2019 в 01:08
поделиться

Мне нравится ваше отношение к DIY. Я также не смог найти никаких альтернатив Profiler, но вот статья , которая очень помогла мне одним из авторов книги Adobe Training from the Source . Я бы предложил провести точечные обзоры предложений по кодированию, изложенных здесь. HTH.

UPDATE: De MonsterDebugger также имеет функцию монитора памяти.

-121--3422740-

sudo gem install mysql -v 2.7 -- -with-mysql-config =/usr/local/mysql/bin/mysql _ config также сделал трюк для меня при миграции на мой новый ноутбук Snow Leopard. Я использовал MacPorts не для установки mysql, а скорее двоичный, и мне не повезло с решениями флага арки или symlinks.

-121--1586742-

Этот код работает:

$in = Array("home", "about-us");
foreach ($in as $a) {

  ## this is the line you're looking for
  $out = preg_replace('/-?\b(.)/e', "strtoupper('$1')", $a);

  echo "$a  = $out<br/>";
}

Но я сомневаюсь, что он быстрее, и я согласен с другими комментаторами, что он не обязательно лучше. Уменьшение трех линий до одного волосатого regexp хорошо, только если вы гольф .

4
ответ дан 3 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: