Як видалити перші 10 символів із рядка?


93

Як ігнорувати перші 10 символів рядка?

Вхідні дані:

str = "hello world!";

Вихід:

d!

9
string.Substring (9); де 9 - індекс початку
Waqas

Не забудьте спочатку перевірити, що рядок має принаймні 10 символів, інакше ви отримаєте виняток.
Джонатан,

Чому підрядок не підтримує (startIndex, endindex)? кожного разу, коли нам доводиться обчислювати довжину .. :-(
Санграм Нандхіле

1
@Waqas: насправді це str.Substring (10), параметром є позиція, з якої починається витяг підрядка
Резван Флавій Панда

Відповіді:


94
str = "hello world!";
str.Substring(10, str.Length-10)

Вам потрібно буде виконати перевірку довжини, інакше це призведе до помилки


215

str = str.Remove(0,10); Видаляє перші 10 символів

або

str = str.Substring(10); Створює підрядок, починаючи з 11-го символу до кінця рядка.

Для ваших цілей вони повинні працювати однаково.


16

Підрядки - це, мабуть, те, що ви хочете, як вказували інші. Але просто щоб додати ще один варіант до суміші ...

string result = string.Join(string.Empty, str.Skip(10));

Вам навіть не потрібно перевіряти довжину на цьому! :) Якщо менше 10 символів, ви отримуєте порожній рядок.


А для кращої читабельності ви можете використовувати "". Він компілюється точно так само, як і рядок. Порожньо в наші дні.
PRMan

Це не робить, "" створює новий рядок, а рядок. Порожні посилання на один. Це насправді не має значення з точки зору продуктивності (я маю на увазі це один порожній рядок, так що так ...), але просто хотів зазначити це :)
Zer0

11

Substring має два методи перевантаження:

public string Substring(int startIndex);//The substring starts at a specified character position and continues to the end of the string.

public string Substring(int startIndex, int length);//The substring starts at a specified character position and taking length no of character from the startIndex.

Отже, для цього сценарію ви можете використовувати перший метод, наведений нижче:

var str = "hello world!";
str = str.Substring(10);

Тут виводиться:

d!

Якщо ви можете застосувати захисне кодування, перевіривши його довжину.


6

Параметр Substringмає параметр startIndex. Встановіть його відповідно до індексу, з якого ви хочете почати.


3

Ви можете видалити Char, використовуючи нижній рядок,

: - Спочатку перевірте, чи має рядок достатньо символів для видалення , наприклад

   string temp="Hello Stack overflow";
   if(temp.Length>10)
   {
    string textIWant = temp.Remove(0, 10);
   }


1

Ви можете використовувати метод Substring method, який приймає один параметр, який є індексом, з якого починається.

У моєму коді нижче я розглядаю справу, якщо довжина менша за бажаний індекс початку і коли довжина дорівнює нулю.

string s = "hello world!";
s = s.Substring(Math.Max(0, Math.Min(10, s.Length - 1)));

в даний час він повертає останній символ із рядка, якщо рядок менше 10 символів.
Резван Флавій Панда

1

Для:

var str = "hello world!";

Щоб отримати отриманий рядок без перших 10 символів і порожній рядок, якщо рядок менше або дорівнює 10 довжиною, ви можете використовувати:

var result = str.Length <= 10 ? "" : str.Substring(10);

або

var result = str.Length <= 10 ? "" : str.Remove(0, 10);

Перший варіант є кращим, оскільки йому потрібен лише один параметр методу.


1

Немає необхідності вказувати довжину Substringметоду. Тому:

string s = hello world;
string p = s.Substring(3);

p буде:

"ось світ".

Єдиний виняток, на який вам потрібно вжити, - це ArgumentOutOfRangeExceptionякщо startIndexменше нуля або більше довжини цього екземпляра.


0

Починаючи з C # 8, ви просто можете використовувати Range Operator. Це більш ефективний та кращий спосіб вирішення таких випадків.

string AnString = "Hello World!";
AnString = AnString[10..];

C# 8не підтримується при націлюванні .NET Framework.
l33t

0

Виклик SubString()виділяє новий рядок. Для оптимальної роботи слід уникати зайвого розподілу. Починаючи з C# 7.2ви можете скористатися Span шаблоном .

При націлюванні .NET Frameworkвключайте пакет System.Memory NuGet . Для .NET Coreпроектів це працює нестандартно.

static void Main(string[] args)
{
    var str = "hello world!";
    var span = str.AsSpan(10); // No allocation!

    // Outputs: d!
    foreach (var c in span)
    {
        Console.Write(c);
    }

    Console.WriteLine();
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.