Tôi đã đọc câu hỏi này để có được char đầu tiên của chuỗi. Có cách nào để có được n số ký tự đầu tiên từ một chuỗi trong C # không?
Tôi đã đọc câu hỏi này để có được char đầu tiên của chuỗi. Có cách nào để có được n số ký tự đầu tiên từ một chuỗi trong C # không?
Câu trả lời:
Bạn có thể sử dụng Enumerable. Thực hiện như:
char[] array = yourStringVariable.Take(5).ToArray();
Hoặc bạn có thể sử dụng String.Sub chuỗi .
string str = yourStringVariable.Substring(0,5);
Hãy nhớ rằng String.Substring
có thể đưa ra một ngoại lệ trong trường hợp độ dài của chuỗi nhỏ hơn các ký tự được yêu cầu.
Nếu bạn muốn lấy lại kết quả trong chuỗi thì bạn có thể sử dụng:
Sử dụng String Con constructor và LINQ's Take
string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
Điểm cộng với cách tiếp cận là không kiểm tra độ dài trước khi ra tay.
String.Substring
với kiểm tra lỗigiống:
string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;
IsNullOrWhiteSpace
sai ở đây Hãy xem xét một chuỗi có 10 khoảng trống - mã của bạn sẽ trả về tất cả 10. IsNullOrEmpty
Thay vào đó hãy sử dụng . (Nó không phải là tốt để kết hợp IsNullOrWhiteSpace
với bất kỳ thử nghiệm khác; Thay vì kiểm tra for null + trống rỗng, sau đó Trim
nếu được chỉ định hành vi, sau đó làm bất cứ điều gì kiểm tra / hoạt động là cần thiết.)
Bạn có thể sử dụng Chuỗi con (int start Index, int length)
string result = str.Substring(0,5);
Chuỗi con bắt đầu tại một vị trí ký tự được chỉ định và có độ dài được chỉ định. Phương pháp này không sửa đổi giá trị của thể hiện tại. Thay vào đó, nó trả về một chuỗi mới với các ký tự có độ dài bắt đầu từ vị trí start Index trong chuỗi hiện tại, MSDN
Nếu chuỗi nguồn nhỏ hơn năm ký tự thì sao? Bạn sẽ có được ngoại lệ bằng cách sử dụng phương pháp trên. Chúng ta có thể đặt điều kiện để kiểm tra xem số lượng ký tự trong chuỗi có nhiều hơn 5 hay không, sau đó lấy năm ký tự đầu tiên thông qua Chuỗi con. Lưu ý Tôi đã gán chuỗi nguồn cho biến FirstFiveChar. FirstFiveChar không thay đổi nếu các ký tự nhỏ hơn 5, vì vậy phần khác không bắt buộc.
string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
Không ai đề cập đến cách thực hiện kiểm tra thích hợp khi sử dụng Substring()
, vì vậy tôi muốn đóng góp về điều đó.
Nếu bạn không muốn sử dụng Linq
và đi cùng Substring()
, bạn phải đảm bảo rằng chuỗi của bạn lớn hơn tham số thứ hai (độ dài) của Substring()
hàm.
Giả sử bạn cần 5 ký tự đầu tiên. Bạn nên kiểm tra chúng, như thế này:
string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);
// firstFiveChars: "love" (4 characters)
Nếu không có kiểm tra này, Substring()
hàm sẽ đưa ra một ngoại lệ vì nó sẽ lặp qua các chữ cái không có ở đó.
Tôi nghĩ rằng bạn có được ý tưởng...
Vấn đề với .Substring(,)
là, bạn cần chắc chắn rằng chuỗi đã cho có ít nhất độ dài của số ký tự được hỏi, nếu không ArgumentOutOfRangeException
sẽ bị ném.
Giải pháp 1 (sử dụng 'Chuỗi con'):
var firstFive = stringValue != null ?
stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
null;
Hạn chế của việc sử dụng .Substring(
là bạn sẽ cần kiểm tra độ dài của chuỗi đã cho.
Giải pháp 2 (sử dụng 'Lấy'):
var firstFive = stringValue != null ?
string.Join("", stringValue.Take(5)) :
null;
Sử dụng 'Take' sẽ ngăn bạn cần kiểm tra độ dài của chuỗi đã cho.
Sử dụng chức năng PadRight để ngăn chuỗi quá ngắn, lấy những gì bạn cần sau đó cắt bớt khoảng trắng từ cuối tất cả trong một câu lệnh.
strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
Tôi không biết tại sao mọi người đề cập đến điều này. Nhưng đó là cách ngắn nhất và đơn giản nhất để đạt được điều này.
string str = yourString.Remove(n);
n
- số lượng ký tự mà bạn cần
Thí dụ
var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
Nối năm ký tự khoảng trắng sau đó cắt bỏ năm ký tự đầu tiên và cắt kết quả. Số lượng khoảng trắng bạn nối phải khớp với số lượng bạn đang cắt. Hãy chắc chắn bao gồm dấu ngoặc đơn trước .Substring(0,X)
hoặc bạn sẽ không thêm gì.
string str = (yourStringVariable + " ").Substring(0,5).Trim();
Với kỹ thuật này, bạn sẽ không phải lo lắng về ArgumentOutOfRangeException
các câu trả lời khác.
string str = "GoodMorning"
string strModified = str.Substring(0,5);
Chỉ cần một cái đầu lên là có một cách mới để làm điều này trong các toán tử C # 8.0: Range
Hoặc như tôi muốn gọi em, Pandas lát.
Cách cũ:
string newString = oldstring.Substring(0, 5);
Cách mới:
string newString = oldstring[..5];
Thoạt nhìn có vẻ như một sự đánh đổi khá tệ về khả năng đọc mã ngắn hơn nhưng tính năng mới mang lại cho bạn
những thứ tuyệt vời như thế này:
var lát1 = danh sách [2 .. ^ 3]; // danh sách [Range.Create (2, Index.CreateFromEnd (3))]
var lát2 = danh sách [.. ^ 3]; // danh sách [Range.ToEnd (Index.CreateFromEnd (3))]
var lát3 = danh sách [2 ..]; // danh sách [Range.FromStart (2)]
var lát4 = danh sách [..]; // danh sách [Phạm vi. Tất cả]
Để có được n số ký tự đầu tiên từ một chuỗi trong C #
String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
Dưới đây là một phương thức mở rộng để kiểm tra xem một chuỗi có lớn hơn những gì cần thiết hay không và rút ngắn chuỗi thành số lượng ký tự tối đa được xác định và nối thêm '...'.
public static class StringExtensions
{
public static string Ellipsis(this string s, int charsToDisplay)
{
if (!string.IsNullOrWhiteSpace(s))
return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
return String.Empty;
}
}
Trong C # 8.0, bạn có thể nhận được năm ký tự đầu tiên của chuỗi như vậy
string str = data[0..5];
Dưới đây là một số thông tin về Chỉ số và Phạm vi
Tôi sử dụng:
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
hoặc thay thế nếu bạn cũng muốn kiểm tra Whitespace (thay vì chỉ Null):
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
Hoặc bạn có thể sử dụng String.ToCharArray () .
Nó nhận int startindex
và và int length
như các tham số và trả về mộtchar[]
new string(stringValue.ToCharArray(0,5))
Bạn vẫn cần đảm bảo chuỗi có độ dài phù hợp, nếu không nó sẽ ném ArgumentOutOfRangeException
Vui lòng thử mã này khi str nhỏ hơn 5.
string strModified = str.Substring(0,str.Length>5?5:str.Length);
Nếu chúng tôi chỉ muốn 5 ký tự đầu tiên từ bất kỳ trường nào, thì có thể đạt được điều này bằng Thuộc tính trái
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
Hãy thử mã dưới đây
string Name = "Abhishek";
string firstfour = Name.Substring(0, 4);
Response.Write(firstfour);
Tôi đã thử các câu trả lời trên và tốt nhất tôi nghĩ là câu trả lời này
@item.First_Name.Substring(0,1)
Trong đó tôi có thể nhận được chữ cái đầu tiên của chuỗi
char
** s và bạn đang hỏi về ** ký tự . Chúng không giống nhau.𣊾
và𣇞
là hai ký tự tôi cần sử dụng chỉ mới hôm qua đã thất bại trong phần mềm được viết bằng C # tôi đang sử dụng vì lập trình viên không biết sự khác biệt giữa achar
và ký tự. Đừng rơi vào cái bẫy này!