Saya telah membaca pertanyaan ini untuk mendapatkan karakter pertama dari string. Apakah ada cara untuk mendapatkan n jumlah karakter pertama dari string dalam C #?
Saya telah membaca pertanyaan ini untuk mendapatkan karakter pertama dari string. Apakah ada cara untuk mendapatkan n jumlah karakter pertama dari string dalam C #?
Jawaban:
Anda dapat menggunakan Enumerable. Ambil seperti:
char[] array = yourStringVariable.Take(5).ToArray();
Atau Anda dapat menggunakan String.Substring .
string str = yourStringVariable.Substring(0,5);
Ingatlah bahwa String.Substring
bisa melempar pengecualian jika panjang string kurang dari karakter yang diperlukan.
Jika Anda ingin mendapatkan hasil dalam string maka Anda dapat menggunakan:
Menggunakan String Constructor dan LINQ Take
string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
Nilai tambah dengan pendekatan ini tidak memeriksa panjang sebelum tangan.
String.Substring
pengecekan kesalahanSuka:
string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;
IsNullOrWhiteSpace
salah disini. Pertimbangkan string dengan 10 kosong - kode Anda akan mengembalikan semua 10. Gunakan IsNullOrEmpty
saja. (Ini tidak baik untuk digabungkan IsNullOrWhiteSpace
dengan tes lain; Alih-alih tes untuk null + kosong, maka Trim
jika itu adalah perilaku tertentu, maka lakukan tes / operasi apa pun yang diperlukan.)
Anda dapat menggunakan Substring (int startIndex, int length)
string result = str.Substring(0,5);
Substring dimulai pada posisi karakter yang ditentukan dan memiliki panjang yang ditentukan. Metode ini tidak mengubah nilai instance saat ini. Sebagai gantinya, ia mengembalikan string baru dengan karakter panjang mulai dari posisi startIndex di string saat ini, MSDN
Bagaimana jika string sumber kurang dari lima karakter? Anda akan mendapatkan pengecualian dengan menggunakan metode di atas. Kita dapat memberi syarat untuk memeriksa apakah jumlah karakter dalam string lebih dari 5 kemudian mendapatkan lima pertama melalui Substring. Catatan Saya telah menetapkan string sumber ke variabel firstFiveChar. FirstFiveChar tidak berubah jika karakter kurang dari 5, jadi bagian lain tidak diperlukan.
string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
Tidak ada yang menyebutkan cara melakukan pemeriksaan yang benar saat menggunakan Substring()
, jadi saya ingin berkontribusi tentang hal itu.
Jika Anda tidak ingin menggunakan Linq
dan menggunakannya Substring()
, Anda harus memastikan bahwa string Anda lebih besar dari parameter kedua (panjang) Substring()
fungsi.
Katakanlah Anda membutuhkan 5 karakter pertama. Anda harus memeriksanya dengan benar, seperti ini:
string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);
// firstFiveChars: "love" (4 characters)
Tanpa pemeriksaan ini, Substring()
fungsi akan mengeluarkan pengecualian karena akan beralih melalui huruf yang tidak ada.
Saya pikir Anda mendapatkan ide ...
Masalahnya .Substring(,)
adalah, Anda harus yakin bahwa string yang diberikan setidaknya memiliki panjang karakter yang diminta, jika tidak ArgumentOutOfRangeException
maka akan dilempar.
Solusi 1 (menggunakan 'Substring'):
var firstFive = stringValue != null ?
stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
null;
Kekurangan menggunakan .Substring(
adalah Anda harus memeriksa panjang string yang diberikan.
Solusi 2 (menggunakan 'Ambil'):
var firstFive = stringValue != null ?
string.Join("", stringValue.Take(5)) :
null;
Menggunakan 'Take' akan mencegah Anda perlu memeriksa panjang string yang diberikan.
Gunakan fungsi PadRight untuk mencegah agar string tidak terlalu pendek, ambil apa yang Anda butuhkan lalu pangkas spasi dari ujungnya semua dalam satu pernyataan.
strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
Saya tidak tahu mengapa ada yang menyebutkan ini. Tapi ini cara terpendek dan paling sederhana untuk mencapai ini.
string str = yourString.Remove(n);
n
- jumlah karakter yang Anda butuhkan
Contoh
var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
Tambahkan lima karakter spasi kemudian potong lima pertama dan pangkas hasilnya. Jumlah spasi yang Anda tambahkan harus sesuai dengan jumlah yang Anda potong. Pastikan untuk menyertakan tanda kurung sebelum .Substring(0,X)
atau Anda tidak akan menambahkan apa pun.
string str = (yourStringVariable + " ").Substring(0,5).Trim();
Dengan teknik ini Anda tidak perlu khawatir tentang yang ArgumentOutOfRangeException
disebutkan dalam jawaban lain.
string str = "GoodMorning"
string strModified = str.Substring(0,5);
Hanya ada beberapa cara baru untuk melakukan ini di C # 8.0: Range operator
Atau seperti saya suka memanggil mereka, Pandas iris.
Cara lama:
string newString = oldstring.Substring(0, 5);
Jalan baru:
string newString = oldstring[..5];
Yang sekilas tampak seperti tradeoff yang sangat buruk dari beberapa keterbacaan untuk kode pendek tetapi fitur baru memberi Anda
hal-hal keren seperti ini:
var slice1 = daftar [2 .. ^ 3]; // daftar [Range.Create (2, Index.CreateFromEnd (3))]
var slice2 = daftar [.. ^ 3]; // daftar [Range.ToEnd (Index.CreateFromEnd (3))]
var slice3 = daftar [2 ..]; // daftar [Range.FromStart (2)]
var slice4 = daftar [..]; // daftar [Rentang. Semua]
Untuk mendapatkan n jumlah karakter pertama dari string dalam C #
String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
Di bawah ini adalah metode ekstensi yang memeriksa apakah string lebih besar dari yang dibutuhkan dan mempersingkat string ke jumlah maksimum karakter yang ditentukan dan menambahkan '...'.
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;
}
}
Di C # 8.0 Anda bisa mendapatkan lima karakter pertama dari string seperti itu
string str = data[0..5];
Berikut ini beberapa informasi lebih lanjut tentang Indeks dan Rentang
Saya menggunakan:
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
atau alternatif jika Anda ingin memeriksa Whitespace juga (bukan hanya Null):
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
Atau Anda bisa menggunakan String.ToCharArray () .
Dibutuhkan int startindex
dan dan int length
sebagai parameter dan mengembalikan achar[]
new string(stringValue.ToCharArray(0,5))
Anda masih perlu memastikan bahwa string memiliki panjang yang tepat, jika tidak maka akan melempar a ArgumentOutOfRangeException
Silakan coba kode ini ketika str kurang dari 5.
string strModified = str.Substring(0,str.Length>5?5:str.Length);
Jika kita hanya ingin 5 karakter pertama dari bidang apa pun, maka ini dapat dicapai dengan Atribut Kiri
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
Coba kode di bawah ini
string Name = "Abhishek";
string firstfour = Name.Substring(0, 4);
Response.Write(firstfour);
Saya sudah mencoba jawaban di atas dan yang terbaik menurut saya adalah yang ini
@item.First_Name.Substring(0,1)
Dalam hal ini saya bisa mendapatkan huruf pertama dari string
char
** s dan Anda bertanya tentang ** karakter s. Mereka bukan hal yang sama.𣊾
dan𣇞
dua karakter yang harus saya gunakan baru kemarin yang gagal dalam perangkat lunak yang ditulis dalam C # saya gunakan karena programmer tidak tahu perbedaan antara achar
dan karakter. Jangan jatuh ke dalam perangkap ini!