2011-01-13 94 views
6

文字列の最後の文字を削除しようとしています。この最後の文字は改行(System.Environment.NewLine)です。文字列の最後の文字を削除する(VB.NET 2008)

私はいくつかのことを試しましたが、削除できません。

例:

myString.Remove(sFP.Length - 1) 

例2:私はそれを行うことができますどのように

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

答えて

16

改行がCR LFの場合は、実際には2つの連続する文字です。 Removeの電話番号Length - 2をお試しください。 、改行(

str.TrimEnd(vbCr, vbLf) 

は、すべての空白文字を削除するには:あなたは、文字列の末尾にすべての「\ n」や「\ R」の文字を削除したい場合は

は、文字を渡し、TrimEndを呼び出してみてくださいタブ、スペース、...)何も渡さずにTrimEndに電話するだけです。

+0

と同様に、VBの文字列は不変です。 –

+0

@Konradもちろん!今私はそれについて考えるので、特に混乱するかもしれないので、この質問で指摘することは実際に重要です。明確にするために、* statement *ではなく* expression *を提供することを意図しました。 'str'変数は変更されません。戻り値は別個の文字列です。変数を変更したい場合は、 'str = str.TrimEnd()'のようなものを使う必要があります。 –

+1

ok。ありがとうございました。あなたの例に従って解決されます:myString = myString.Remove(mystring.Length - 2) – aco

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

代わりのvbCrLfのEnvironment.NewLineと同じ:

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

ところで、差がある:Environment.NewLineはプラットフォーム固有である

(FEは、他のOSに他の文字列を返し) remove -approachは、この関数の戻り値を元の文字列参照に割り当てなかったため動作しませんでした。

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

か、すべての改行を置換する場合:

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

使用:C#で

Dim str As String 
str = "cars,cars,cars" 
str = str.Remove(str.LastIndexOf(",")) 
関連する問題