2011-01-13 11 views
6

Próbuję usunąć ostatni znak ciągu. Ta ostatnia postać to nowa linia (System.Environment.NewLine).Usuń ostatni znak ciągu znaków (VB.NET 2008)

Próbowałem niektórych rzeczy, ale nie mogę go usunąć.

Przykład:

myString.Remove(sFP.Length - 1) 

Przykład 2:

myString= Replace(myString, Environment.NewLine, "", myString.Length - 1) 

Jak mogę to zrobić?

Odpowiedz

16

Jeśli twój nowy wiersz to CR LF, w rzeczywistości są to dwa kolejne znaki. Wypróbuj połączenie Remove z Length - 2.

Jeśli chcesz usunąć wszystkie znaki „\ r” „\ n”, a na końcu łańcucha, spróbuj dzwoniąc TrimEnd, mijając znaki:

str.TrimEnd(vbCr, vbLf) 

Aby usunąć wszystkie białe znaki znaki (znaki nowej linii, zakładki, spacje, ...) wystarczy zadzwonić pod numer TrimEnd, nie przekazując niczego.

+0

Podobnie jak w C#, VB ciągi są niezmienne. –

+0

@Konrad Oczywiście! Teraz, gdy o tym myślę, ważne jest, aby zwrócić uwagę na to pytanie, ponieważ może to być szczególnie mylące. Aby wyjaśnić, zamierzałem podać wyrażenie * expression *, a nie * *. Nie zmodyfikuje zmiennej 'str'. Wartością zwracaną jest odrębny ciąg znaków. Musisz użyć czegoś takiego jak 'str = str.TrimEnd()' jeśli chcesz zmienić zmienną. –

+1

ok. Dziękuję Ci. Rozwiązany następujący przykład: myString = myString.Remove (mystring.Length - 2) – aco

3
Dim str As String = "Test" & vbCrLf 
str = str.Substring(0, str.Length - vbCrLf.Length) 

samo z Environment.NewLine zamiast vbCrLf:

str = "Test" & Environment.NewLine 
str = str.Substring(0, str.Length - Environment.NewLine.Length) 

Btw, różnica jest: Environment.NewLine jest specyficzne dla platformy (fe powraca inny ciąg w innym systemie operacyjnym)

Twoja prośba o usunięcie nie zadziałała, ponieważ nie przypisałeś zwracanej wartości tej funkcji do oryginalnego odwołania do ciągu:

str = str.Remove(str.Length - Environment.NewLine.Length) 

lub jeśli chcesz zastąpić wszystkie nowe linie:

str = str.Replace(Environment.NewLine, String.Empty) 
-1

Zastosowanie:

Dim str As String 
str = "cars,cars,cars" 
str = str.Remove(str.LastIndexOf(",")) 
Powiązane problemy