Я прочитав це запитання, щоб отримати перший заголовок рядка. Чи є спосіб отримати перше n число символів з рядка в C #?
Я прочитав це запитання, щоб отримати перший заголовок рядка. Чи є спосіб отримати перше n число символів з рядка в C #?
Відповіді:
Ви можете використовувати Enumerable. Вважайте :
char[] array = yourStringVariable.Take(5).ToArray();
Або ви можете використовувати String.Substring .
string str = yourStringVariable.Substring(0,5);
Пам’ятайте, що String.Substring
може викинути виняток у випадку, якщо довжина рядка менша за потрібні символи.
Якщо ви хочете повернути результат в рядку, ви можете використовувати:
Використання String Constructor та LINQ's Take
string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
Плюсом при підході є не перевірка довжини перед рукою.
String.Substring
при перевірці помилокподібно до:
string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;
IsNullOrWhiteSpace
тут неправильно. Розгляньте рядок з 10 пробілами - ваш код поверне всі 10. Використовуйте IsNullOrEmpty
замість цього. (Недобре поєднувати IsNullOrWhiteSpace
з будь-яким іншим тестом; замість тесту на null + empty, тоді, Trim
якщо це визначено поведінкою, тоді робіть усі необхідні тести / операції.)
Ви можете використовувати Substring (int startIndex, int length)
string result = str.Substring(0,5);
Підрядка починається з визначеної позиції символу і має задану довжину. Цей метод не змінює значення поточного екземпляра. Натомість він повертає нову рядок із символами довжини, починаючи з позиції startIndex у поточній рядку MSDN
Що робити, якщо вихідний рядок менше п'яти символів? Ви отримаєте виняток, використовуючи вищевказаний метод. Ми можемо поставити умову, щоб перевірити, чи кількість символів у рядку більше 5, а потім отримаємо перші п'ять через підрядку. Примітка. Я призначив джерельну рядок змінній firstFiveChar. ПершийFiveChar не змінюється, якщо символів менше 5, тому інша частина не потрібна.
string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
Ніхто не згадував, як зробити належні перевірки при використанні Substring()
, тому я хотів зробити свій внесок у це.
Якщо ви не хочете користуватися Linq
і переходити з ним Substring()
, ви повинні переконатися, що ваш рядок перевищує другий параметр (довжина) Substring()
функції.
Скажімо, вам потрібно перші 5 символів. Ви повинні отримати їх належним чином, наприклад, таким чином:
string title = "love" // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);
// firstFiveChars: "love" (4 characters)
Без цієї перевірки Substring()
функція видасть виняток, оскільки вона повторюється через літери, яких там немає.
Я думаю, ви зрозуміли ідею ...
Проблема .Substring(,)
полягає в тому, що вам потрібно бути впевненим, що даний рядок має принаймні довжину запитуваної кількості символів, інакше ArgumentOutOfRangeException
буде викинуто.
Рішення 1 (використовуючи "Підрядку"):
var firstFive = stringValue != null ?
stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
null;
Недолік використання .Substring(
полягає в тому, що вам потрібно перевірити довжину заданого рядка.
Рішення 2 (використовуючи "Візьми"):
var firstFive = stringValue != null ?
string.Join("", stringValue.Take(5)) :
null;
Використання "Take" запобігає необхідності перевірити довжину заданого рядка.
Використовуйте функцію PadRight, щоб запобігти занадто короткий рядок, захопіть те, що вам потрібно, потім обріжте пробіли з кінця все в одному операторі.
strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
Я не знаю, чому це хтось згадав. Але це найкоротший і найпростіший спосіб досягти цього.
string str = yourString.Remove(n);
n
- кількість знаків, які вам потрібні
Приклад
var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
Додайте п'ять символів пробілу, потім відріжте перші п’ять і обріжте результат. Кількість пробілів, які ви додаєте, повинна відповідати номеру, який ви вирізаєте. Не забудьте включити дужки до цього, .Substring(0,X)
або ви нічого не додасте.
string str = (yourStringVariable + " ").Substring(0,5).Trim();
За допомогою цієї методики вам не доведеться турбуватися про ArgumentOutOfRangeException
згадане в інших відповідях.
string str = "GoodMorning"
string strModified = str.Substring(0,5);
Лише вгору є новий спосіб зробити це в C # 8.0: Оператори діапазону
Або як я люблю їх називати, шматочки панди.
Старий шлях:
string newString = oldstring.Substring(0, 5);
Новий шлях:
string newString = oldstring[..5];
Що на перший погляд виглядає як досить поганий компроміс читання для коротшого коду, але нова функція дає вам
класні речі, як це:
var slice1 = список [2 .. ^ 3]; // список [Range.Create (2, Index.CreateFromEnd (3))]
var slice2 = список [.. ^ 3]; // список [Range.ToEnd (Index.CreateFromEnd (3))]
var slice3 = список [2 ..]; // список [Range.FromStart (2)]
var slice4 = список [..]; // список [Range.All]
Щоб отримати перше n число символів з рядка в C #
String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
Нижче наведено метод розширення, який перевіряє, чи є рядок більшим, ніж потрібно, і скорочує рядок до визначеної максимальної кількості символів та додаток '...'.
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;
}
}
У C # 8.0 ви можете отримати перші п’ять символів рядка так
string str = data[0..5];
Ось додаткова інформація про індекси та діапазони
Я використовую:
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
або альтернативу, якщо ви також хочете перевірити на Whitespace (замість лише Null):
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
Або ви можете використовувати String.ToCharArray () .
Він приймає int startindex
і int length
як параметри і повертає achar[]
new string(stringValue.ToCharArray(0,5))
Вам все-таки потрібно переконатися, що рядок має належну довжину, інакше вона викине a ArgumentOutOfRangeException
Будь ласка, спробуйте цей код, коли str менше 5.
string strModified = str.Substring(0,str.Length>5?5:str.Length);
Якщо ми хочемо лише перших 5 символів з будь-якого поля, то цього можна досягти за допомогою лівого атрибута
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
Спробуйте нижче код
string Name = "Abhishek";
string firstfour = Name.Substring(0, 4);
Response.Write(firstfour);
Я спробував наведені вище відповіді, і найкраще, на мою думку, це ця
@item.First_Name.Substring(0,1)
У цьому я міг отримати першу букву рядка
char
** s, а ви запитуєте про ** s. Вони не одне і те ж.𣊾
і𣇞
це два символи, які мені потрібно було використати лише вчора, які не вдалися до програмного забезпечення, написаного на C #, який я використовував, оскільки програміст не знав різниці міжchar
символом "a". Не потрапляйте в цю пастку!