php(Laravel零)中如何将字符串转换为大小写交替?

How to converts the string to alternate upper and lower case in php (Laravel Zero)?

我正在研究 Laravel 零并创建了新命令,该命令将以大写和小写形式显示用户输入。

有没有办法同时显示输出的大小写交替?

命令如下:

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”?

您可以在 laravel 中使用此 这是理解这个的例子

使用起来很简单

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

此处linke of docs and functions helpers

答案:

$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

如果你想要一个更短的版本,你可以使用下面的代码:

$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) 的漂亮函数中并完成它:)