| 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: 14 let
|
|||
0