Как я могу получить последние четыре символа из строки в C #? - PullRequest
273 голосов
/ 20 июня 2011

Предположим, у меня есть строка:

string mystring = "34234234d124";

Я хочу получить последние четыре символа этой строки, которые равны "d124".Я могу использовать SubString, но для этого требуется пара строк кода.

Можно ли получить этот результат в одном выражении с помощью C #?

Ответы [ 18 ]

363 голосов
/ 20 июня 2011
mystring.Substring(Math.Max(0, mystring.Length - 4)); //how many lines is this?

Если вы уверены, что длина вашей строки не менее 4, то она еще короче:

mystring.Substring(mystring.Length - 4);
201 голосов
/ 20 июня 2011

Вы можете использовать метод расширения :

public static class StringExtension
{
    public static string GetLast(this string source, int tail_length)
    {
       if(tail_length >= source.Length)
          return source;
       return source.Substring(source.Length - tail_length);
    }
}

И затем вызвать:

string mystring = "34234234d124";
string res = mystring.GetLast(4);
44 голосов
/ 06 марта 2013

Хорошо, я вижу, что это старый пост, но почему мы переписываем код, уже предоставленный в фреймворке?

Я бы предложил добавить ссылку на библиотеку DLL "Microsoft.VisualBasic"

using Microsoft.VisualBasic;
//...

string value = Strings.Right("34234234d124", 4);
28 голосов
/ 20 июня 2011
string mystring = "34234234d124";
mystring = mystring.Substring(mystring.Length-4)
26 голосов
/ 20 октября 2017

Все, что вам нужно сделать, это ..

String result = mystring.Substring(mystring.Length - 4);
26 голосов
/ 20 июня 2011

Использование Подстрока на самом деле довольно короткая и читаемая:

 var result = mystring.Substring(mystring.Length - Math.Min(4, mystring.Length));
 // result == "d124"
16 голосов
/ 23 июня 2016

Вы можете просто использовать Substring метод C #.Например,

string str = "1110000";
string lastFourDigits = str.Substring((str.Length - 4), 4);

Будет возвращен результат 0000.

16 голосов
/ 02 января 2013

Вот еще один вариант, который не должен работать слишком плохо (из-за отложенного выполнения ):

new string(mystring.Reverse().Take(4).Reverse().ToArray());

Хотя метод расширения для этой цели mystring.Last(4), безусловно, является самым чистым решением, хотя и немного больше работы.

11 голосов
/ 07 июня 2014

Простое решение будет:

string mystring = "34234234d124";
string last4 = mystring.Substring(mystring.Length - 4, 4);
7 голосов
/ 12 июля 2012
mystring = mystring.Length > 4 ? mystring.Substring(mystring.Length - 4, 4) : mystring;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...