public function toTitleCase($ignore = null)
    {
        return $this->newSelf(preg_replace_callback
        (
            '/([\S]+)/u',
            function ($match) use ($ignore)
            {
                if ($ignore && in_array($match[0], $ignore, true))
                {
                    return $match[0];
                }
                else
                {
                    return (string)$this->newSelf($match[0])
                    ->toLowerCase()->upperCaseFirst();
                }
            },
            (string)$this->trim()
        ));
    }