2013-02-23 15 views
8

Chcę móc określić indeks w ciągu znaków i usunąć go.php: Usunąć konkretny indeks z ciągu znaków?

mam następujące:

"Hello World!!" 

Chcę usunąć 4th indeks (o w Halo). Tutaj będzie końcowy wynik:

"Hell World!!" 

Próbowałem unset(), ale to nie działało. Zrobiłem Google, jak to zrobić i tak mówią wszyscy, ale to nie zadziałało. Może nie używałem tego dobrze, idk.

+3

Użyj 'substr'. Zdobądź pierwszych kilka znaków, zdobądź kilka ostatnich znaków po indeksie, a następnie połącz. – mario

+0

Próbowałem 'unset()', ale to nie zadziałało. Zrobiłem Google, jak to zrobić i tak mówią wszyscy, ale to nie zadziałało. –

+0

str_split do tablicy usuń indeks, a następnie implode z powrotem do łańcucha. – defaultNINJA

Odpowiedz

7
$str="Hello World"; 
$str1 = substr($str,0,4); 
$str2 = substr($str,5,7); 
echo $str1.$str2; 
+0

Prawdopodobnie rzuciłbym łańcuch w tablicę i po prostu usunięto czwarty klucz. – Kermit

+1

@AarolamaBluenk struny! = Tablice w php :) –

+0

W linii 3: Liczba całkowita '7' jako trzeci argument' substr' nie jest wymagana, aby działało. –

9

Jest to ogólny sposób go rozwiązać:

$str = "Hello world"; 
$i = 4; 
echo substr_replace($str, '', $i, 1); 

Zasadniczo wymienić część napisu przed począwszy od wskaźnika z częścią łańcucha, który jest w sąsiedztwie.

Zobacz także: substr_replace()

Lub po prostu:

substr($str, 0, $i) . substr($str, $i + 1) 
0
$myVar = "Hello World!!"; 

$myArray = str_split($myVar); 
array_splice($myArray, 4, 1); 

$myVar = implode("", $myArray); 

Osobiste Lubię czynienia z tablicami.

(Przepraszam za brak nawiasie kod oddanie to nawet przez mój telefon)

+0

Używanie tablic nie jest ani krótsze, ani wydajniejsze; poza tym, funkcje ciągów nie są takie trudne? :) –

0

myślę, że można utworzyć funkcję i nazwać jak ten

function rem_inx ($str, $ind) 
    { 
     return substr($str,0,$ind++). substr($str,$ind); 
    } 

    //use 
    echo rem_inx ("Hello World!!", 4);  
0

ten php specyfikę pracy z ciągami podsłuch mnie również przez chwilę. Oczywiście naturalnym rozwiązaniem jest użycie funkcji ciągów lub użycie tablic, ale jest to wolniejsze niż bezpośrednio działanie z indeksem ciągów w mojej opinii. Z następującym problemem fragmentu jest to, że w pamięci ciąg jest zastępowany tylko pustym , a jeśli masz porównanie lub coś innego, to nie jest dobra opcja. Może w przyszłej wersji dostaniemy wbudowaną funkcję, która bezpośrednio usunie indeksy łańcuchów, o których wie.

$string = 'abcdefg'; 
$string[3] = ''; 
var_dump($string); 
echo $string; 
Powiązane problemy