Я прочитал этот вопрос, чтобы получить первый символ строки. Есть ли способ получить первые n символов из строки в C #?
Я прочитал этот вопрос, чтобы получить первый символ строки. Есть ли способ получить первые n символов из строки в C #?
Ответы:
Вы можете использовать Enumerable.Take как:
char[] array = yourStringVariable.Take(5).ToArray();
Или вы можете использовать String.Substring .
string str = yourStringVariable.Substring(0,5);
Помни что String.Substring
может вызвать исключение в случае, если длина строки меньше требуемого символа.
Если вы хотите вернуть результат в виде строки, вы можете использовать:
Использование конструктора строк и LINQ 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
если это задано поведение, тогда выполняйте все необходимые тесты / операции.)
Пожалуйста попробуйте:
yourString.Substring(0, 5);
Проверить C # Substring , String.Substring Method
Вы можете использовать Substring (int startIndex, int length)
string result = str.Substring(0,5);
Подстрока начинается с указанной позиции символа и имеет указанную длину. Этот метод не изменяет значение текущего экземпляра. Вместо этого он возвращает новую строку с длиной символов, начиная с позиции startIndex в текущей строке, MSDN.
Что делать, если исходная строка меньше пяти символов? Вы получите исключение, используя вышеуказанный метод. Мы можем поставить условие, чтобы проверить, превышает ли количество символов в строке 5, а затем получить первые пять через Substring. Обратите внимание, что я назначил исходную строку переменной firstFiveChar. FirstFiveChar не изменяется, если символов меньше 5, поэтому часть else не требуется.
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 (с помощью Take):
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);
или альтернативный вариант, если вы также хотите проверить наличие пробелов (а не только Null):
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
Или вы можете использовать String.ToCharArray () .
Он принимает int startindex
и и int length
как параметры и возвращаетchar[]
new string(stringValue.ToCharArray(0,5))
Вам все равно нужно будет убедиться, что строка имеет правильную длину, иначе она выдаст ArgumentOutOfRangeException
Пожалуйста, попробуйте этот код, если str меньше 5.
string strModified = str.Substring(0,str.Length>5?5:str.Length);
Если нам нужны только первые 5 символов из любого поля, это может быть достигнуто с помощью атрибута Left.
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, а вы спрашиваете о ** символах . Они не одно и то же.𣊾
и𣇞
два символа, которые мне нужно было использовать только вчера, что не удалось в программном обеспечении, написанном на C #, которое я использовал, потому что программист не знал разницы между achar
и символом. Не попадитесь в эту ловушку!