2009-05-21 24 views

Odpowiedz

75
string r = "123-456-7"; 
r = r.Replace("-", ""); 
+1

Pokonaj mnie o 17.3745853 sekundy +1 –

+2

Właściwie 36 sekund, skąd jestem. ;) –

+1

Tak prosty ??????????????????? – Gold

19

To powinno załatwić sprawę:

String st = "123-456-7".Replace("-",""); 
+2

Wszystko w jednym wierszu. Cool +1 – ichiban

4

być jasne, chcesz zastąpić każdy myślnik (-) z pustymi/nic. Po zastąpieniu go backspace, to wymazałoby znak przed nim!

To doprowadziłoby do: 123-456-7 ==> 12457

Sean Bright ma właściwą odpowiedź.

16
string r = "123-456-7".Replace("-", String.Empty); 

dla .NET 1.0 String.Empty nie podejmie dodatkowego miejsca na stercie, ale „” wymaga pamięci na stercie i jej adres na stosie, w wyniku czego powstaje więcej kodu zespołu. Dlatego String.Empty jest szybszy niż "".

Również String.Empty oznacza brak błędów literowych.

Sprawdź link What is the difference between String.Empty and “”.

+0

Nie wierzę, że to prawda. String.Empty jest stałą dla "". Kompilator wskazuje wszystkie "" literały na String.Empty. Nie ma znaczenia, ile masz "" literałów. – AMissico

+0

Dzięki, AMissico ... Właśnie sprawdziłem stertę dla 3.5 framework i masz rację, zarówno "" jak i String.Empty wskazują na to samo miejsce. Ale, dla wersji 1.0, zostanie przydzielone miejsce na stercie dla "". Odpowiednio zredagowałem odpowiedź :) –

-2

Dowolna z powyższych metod, jak sądzę, jest w porządku, ale jeśli jesteś w jakiejś skomplikowanej operacji lepiej pomyśl o regexie, to jest naprawdę świetne.

-1

Użyj String.Empty lub null zamiast "", ponieważ "" stworzy obiekt w pamięci dla każdego wystąpienia, podczas gdy inni będą używać tego samego obiektu.

+6

Po prostu nie, zobacz http://stackoverflow.com/questions/263191/in-c-should-i-use-string-empty- or-string-empty-or – weston

+0

Poprawnie ! Przepraszam. Miałem złe zdjęcie. Dzięki za poprawienie mnie. – Darshana

Powiązane problemy