PHP :: Aufgabe #260

1 Lösung Lösung öffentlich

Zeichenkette einlesen, auf 10 Wörter prüfen und jedes Vokal ersetzen

Anfänger - PHP von Cara - 02.04.2020 um 17:41 Uhr
Schreibe ein Programm welches den Benutzer auffordert eine Zeichenkette einzugeben. Diese Zeichenkette sollte mindestens 10 Wörter haben. Wenn diese Anforderung nicht gegeben ist, so wird erneut zur Eingabe aufgefordert, solange bis er 10 Wörter oder "exit" eingibt. Bei "exit" wird das Programm beendet.

Beinhaltet die eingegebene Zeichenkette mindestens 10 Wörter, so werden alle Vokale durch ein "i" ersetzt und ausgeben.

Lösungen:

vote_ok
von Exception (7090 Punkte) - 04.04.2020 um 10:38 Uhr
Leicht abgewandelte Aufgabe.

main.php
Quellcode ausblenden PHP-Code
<?php

require_once 'replace.php';

array_shift($argv); // remove file name

foreach ($argv as $arg)
{
  echo '----------------' . PHP_EOL;
  echo 'STRING: ' . $arg . PHP_EOL;
  echo 'RESULT: ' . replace($arg) . PHP_EOL;
}


replace.php
Quellcode ausblenden PHP-Code
<?php

function replace(string $str, string $replacement = 'i'): string
{
  preg_match_all('/\S+/', $str, $matches);
  $wordCount = sizeof($matches[0]);

  if ($wordCount === 0)
  {
    return 'No words given!' . PHP_EOL;
  }
  elseif ($wordCount < 10)
  {
    return 'Only ' . sizeof($matches[0]) . ' words instead of 10 or more!';
  }

  return preg_replace('/[aeiouAEIOU]/', $replacement, $str);
}


Hier wird das main.php Skript mit zwei zusätzlichen Parametern aufgerufen werden.
Wobei der erste Parameter exakt 10 Wörter beinhaltet und der zweite weniger als 10.

Konsolenausgabe:


php main.php "eins zwei drei vier fünf sechs sieben acht neun zehn" "keine 10 wörter!"
----------------
STRING: eins zwei drei vier fünf sechs sieben acht neun zehn
RESULT: iins zwii drii viir fünf sichs siibin icht niin zihn
----------------
STRING: keine 10 wörter!
RESULT: Only 3 words instead of 10 or more!