Как заглавная буква между цифрами - PullRequest
0 голосов
/ 12 апреля 2019

Мне нужна функция строки php, которая переводит буквы в верхний регистр между двумя числами.Он должен идентифицировать эти строки в конце строки.Там я застрял, потому что простое использование strtoupper () делает всю строку заглавной.

Например:

Word word 24l95 needs to be Word word 24L95, 
Word 24h72 --> Word 24H72, 
Word word 2a3 --> Word word 2A3, 
Word 3b --> Word 3B etc.`

Я понятия не имею, как это сделать или даже как начать выполнять эту функцию,Если кто-нибудь знает лучше меня, это будет с благодарностью.

Мне жаль, что я так плохо задал этот вопрос.

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 12 апреля 2019

Использовать встроенную функцию php strtoupper ()

<?php
  echo strtoupper('24l95');

Выход: - https://3v4l.org/XqYvW

2 голосов
/ 12 апреля 2019

Вы можете использовать strtoupper(), который является встроенной функцией php. Он только преобразует алфавиты в верхний регистр. Из документации

Возвращает строку со всеми буквенными символами, преобразованными в верхний регистр.

2 голосов
/ 12 апреля 2019

Использование PHP во встроенной функции strtoupper () .

$str = strtoupper($str);

Это будет прописными буквами всех алфавитов и не повлияет на числа.

Вам не нужно беспокоиться о том, находится ли алфавит (строка) между цифрами.

Эта функция не имеет ничего общего с числами.

EDIT:

Согласно обновленному Вопросу, OP нужны алфавиты, включенные в строку.

Вы можете сделать это, используя функцию preg_replace().

<code>$words = '24h72';
$words = preg_replace('/[0-9]+/', '', $words);
echo '<pre>';print_r($words);echo '
';

Быстрый ручной запуск для этой программы

Input --> Output
24l95 --> l
24h72 --> H
2a3 --> A
3b --> B

Рабочий код для поиска алфавитов только в строках:

Рабочий код для прописных букв всех букв:

1 голос
/ 12 апреля 2019

Работает ли это для вас?

$string = 'Word word 24l95 Word 24h72';

preg_match_all( '/\d[a-zA-Z]+\d/', $string, $matches );

foreach ( $matches[0] as $match ) {
    $string = str_replace( $match, strtoupper( $match ), $string );
}

var_dump( $string );

Используется preg_match_all для поиска соответствующих частей строки, а затем str_replace и strtoupper для замены этих частей.

Результат:

string(26) "Word word 24L95 Word 24H72"

Редактировать: Отредактировано регулярное выражение только для strtoupper первой буквы (согласно комментариям).

$string = 'Word word 24h72 word 14d52 14ad52 14d 14ab';

preg_match_all( '/\d[a-zA-Z]/', $string, $matches );

foreach ( $matches[0] as $match ) {
    $string = str_replace( $match, strtoupper( $match ), $string );
}

var_dump( $string );

Результат:

string(42) "Word word 24H72 word 14D52 14Ad52 14D 14Ab"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...