Я работаю над Laravel Zero и создал новую команду, которая будет отображать пользовательский ввод в верхнем и нижнем регистре.

Есть ли способ также отображать вывод альтернативного верхнего и нижнего регистра?

Вот команда:

class UppercaseCommand extends Command
{
/**
 * The signature of the command.
 *
 * @var string
 */
protected $signature = 'converts';

/**
 * The description of the command.
 *
 * @var string
 */
protected $description = 'Converts the string to uppercase, lowercase, and alternate';

/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle()
{
    $a = readline('Enter a string: ');
    echo "Output in uppercase: " , strtoupper($a). PHP_EOL;
    echo "Output in lowercase: " , strtolower($a);
}

/**
 * Define the command's schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
public function schedule(Schedule $schedule): void
{
    // $schedule->command(static::class)->everyMinute();
}
}

Итак, как я могу добавить новую строку, чтобы показать ввод, например, так: «hElLo wOrLd»?

0
Enigma 17 Янв 2022 в 12:26
Вы можете использовать str_​split, чтобы "преобразовать строку в массив", затем перебрать массив
 – 
brombeer
17 Янв 2022 в 13:32

3 ответа

Вы можете использовать эту библиотеку в laravel вот пример, чтобы понять это

Это простой способ использовать его

$lower=Illuminate\Support\Str::lower($value);
$upper=Illuminate\Support\Str::upper($value);

Здесь ссылка на документы и вспомогательные функции

0
Ossama Abd 17 Янв 2022 в 12:32
Я могу получить строчные и прописные буквы, но я ищу третий способ отобразить его, как этот "hElLo wOrLd"
 – 
Enigma
17 Янв 2022 в 12:37

Ответ:

$chars = str_split($a);
    foreach($chars as $char){
        if ($UpperLowerSwitch){
            
            echo strtolower($char);
            $UpperLowerSwitch = false;
        }else {
            echo strtoupper($char);
            $UpperLowerSwitch = true;
        }
    }

Вывод (если пользователь вставит «hello world»):

hElLo wOrLd
0
Enigma 17 Янв 2022 в 15:24

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

$str = "stack overflow";
$arr = str_split($str);

$result = join(array_map(function($char, $i) {
    return $i % 2 ? strtoupper($char) : strtolower($char);
}, $arr, array_keys($arr)));

// Result: "sTaCk oVeRfLoW"

При этом используется индекс массива символов (i % 2 — нечетные индексы) для изменения регистра символов.

Оберните это в красивую функцию с именем unreadableCapitalization($str) и покончите с этим :)

0
Flame 17 Янв 2022 в 16:14