public function replace($start, $end, $string)
	{
		$start  = (int) $start;
		$end    = (int) $end;
		$string = static::_convertString($string, $this->encoding);

		if ($start < 0 || $start >= $this->length() || $end < 0 || $end >= $this->length()) {
			throw new OutOfBoundsException();
		}

		$this->string = mb_substr(
				$this->string,
				0,
				$start,
				$this->encoding
			) .
			$string .
			mb_substr(
				$this->string,
				$end + 1,
				$this->length(),
				$this->encoding
			);
		return $this;
	}