2017-03-22 42 views
7
String: "hello to the very tall person I am about to meet" 

Những gì tôi muốn nó trở thành này là:Làm thế nào để loại bỏ ký tự đầu tiên và cuối cùng của một chuỗi trong C#?

String: hello to the very tall person I am about to meet 

tôi chỉ có thể tìm thấy mã để cắt đầu?

+1

Bạn có muốn xóa "ký tự đầu tiên và cuối cùng" hoặc bạn muốn xóa dấu ngoặc kép xung quanh không? Đó là những câu hỏi khác nhau. –

+0

trong ví dụ của bạn, bạn đang xóa dấu ngoặc kép. là mục đích thực sự ở đây? –

Trả lời

13

Nếu bạn muốn loại bỏ bất kỳ ký tự đầu tiên và cuối cùng từ chuỗi, sau đó sử dụng xâu theo đề nghị của Anish, nhưng nếu bạn chỉ muốn xóa dấu ngoặc kép từ đầu và cuối, chỉ cần sử dụng

myStr = myStr.Trim('"'); 
+1

Chỉ cần cảnh báo nhanh (vì dường như mọi người vẫn đang xem câu hỏi này): nếu chuỗi bắt đầu hoặc kết thúc bằng nhiều dấu ngoặc kép, thì chuỗi đó cũng sẽ bị xóa, có thể không được dự định (tiêu đề câu hỏi = ký tự đầu tiên và cuối cùng). VÍ DỤ. "" hello world "" => hello world, thay vì "hello world" –

12

Sử dụng phương thức String.Substring.

Vì vậy, nếu chuỗi được lưu trữ trong một biến mystr, làm như vậy:

mystr = mystr.Substring(1, mystr.Length - 2); 
+0

Điều này lấy từ đầu, không phải là kết thúc !! – Beefo

+0

Sai lầm của tôi - Tôi quên C# là dài dựa ... Tôi quá quen với Java! Thay vì mystr.Length - 1, đối số thứ hai nên là mystr.Length - 2. Tôi đã cập nhật câu trả lời của mình. –

2

Nếu bạn đang cố gắng để loại bỏ ký tự cụ thể từ một chuỗi, giống như dấu ngoặc kép trong ví dụ của bạn, bạn có thể sử dụng Trim cho cả trang trí bắt đầu và kết thúc, hoặc TrimStartTrimEnd nếu bạn muốn cắt các ký tự khác nhau từ đầu và cuối. Vượt qua các phương thức này một ký tự (hoặc mảng ký tự) mà bạn muốn xóa khỏi đầu và cuối chuỗi.

var quotedString = "\"hello\""; 
var unQuotedString = quotedString.TrimStart('"').TrimEnd('"'); 

// If the characters are the same, then you only need one call to Trim('"'): 
unQuotedString = quotedString.Trim('"'); 

Console.WriteLine(quotedString); 
Console.WriteLine(unQuotedString); 

Output:

"hello"

chào

Ngoài ra, bạn có thể sử dụng SkipTake cùng với Join để loại bỏ ký tự từ đầu và kết thúc của chuỗi. Điều này sẽ làm việc ngay cả đối và chuỗi rỗng, tiết kiệm cho bạn bất kỳ lo ngại về tính chuỗi dài:

var original = "\"hello\""; 
var firstAndLastRemoved = string.Join("", original.Skip(1).Take(original.Length - 2)); 
Các vấn đề liên quan