Autor | Zpráva | ||
---|---|---|---|
Brouček Profil * |
#1 · Zasláno: 11. 3. 2012, 15:40:38
Zdravím,
neporadil by mi někdo jak co nejjednodušeji vymyslet zadání, aby z proměné (uložená slova) bylo vždy druhé písmeno velké? Třeba zadám slovo "iphone" .. tak aby funkce převedla na "iPhone" nebo "eshop" na "eShop" ? |
||
Taps Profil |
Brouček:
Zadání: Na slova uvedené v proměnné aplikujte funkce, tak aby jste ve výsledku dostali slovo, ve kterém bude na druhé pozici vypsán znak velkým písmenem. <?php function prevod($text){ return str_replace($text[1],strtoupper($text[1]),$text); } echo prevod("iphone"); ?> |
||
Majkl578 Profil |
Taps:
To nebude fungovat s UTF-8 (diakritika apod.). Navíc to nesplňuje požadavek - nahrazuješ všechny výskyty znaku na dané pozici, nicméně měnit se má pouze jeden konkrétní. Tady je multibyte-safe řešení pro zadání v [#1]: /** * Transforms a character to upper case on given position (multibyte-safe). * @param string input * @param int offset * @return string transformed string * @author Majkl578 */ function transformCharCase($string, $position) { $len = mb_strlen($string); if ($position < 0 || $position > $len) throw new \OutOfRangeException('Invalid index'); $s = $position === 0 ? '' : mb_substr($string, 0, $position); // left side $s .= mb_strtoupper(mb_substr($string, $position, 1)); // transformed char if ($position < $len - 1) $s .= mb_substr($string, $position + 1); // right side return $s; } // test var_dump(transformCharCase('iphone', 1) === 'iPhone'); var_dump(transformCharCase('android', 0) === 'Android'); var_dump(transformCharCase('symbian', 6) === 'symbiaN'); var_dump(transformCharCase('žluťoučký', 3) === 'žluŤoučký'); try { transformCharCase('abc', -5); var_dump(FALSE); } catch (\OutOfRangeException $e) { var_dump(TRUE); } try { transformCharCase('abc', 5); var_dump(FALSE); } catch (\OutOfRangeException $e) { var_dump(TRUE); } |
||
Časová prodleva: 11 let
|
0