2013-05-28 3 views
2

В VB существует функция Right, которая возвращает строку, содержащую указанное количество символов с правой стороны строки.Правая функция в C#?

Есть ли аналогичная функция в C#, которая делает то же самое?

спасибо.

ответ

21

Обновление: Как упоминалось в комментариях ниже, мой предыдущий ответ терпит неудачу, если строка короче запрошенной длины (Right() в VB.net этого не делает). Поэтому я немного обновил его.

Там нет аналогичного метода в C#, но вы можете добавить его с помощью следующего метода расширения, который использует Substring() вместо:

static class Extensions 
{ 
    /// <summary> 
    /// Get substring of specified number of characters on the right. 
    /// </summary> 
    public static string Right(this string value, int length) 
    { 
     if (String.IsNullOrEmpty(value)) return string.Empty; 

     return value.Length <= length ? value : value.Substring(value.Length - length); 
    } 
} 

метод, предоставленный копируется из DotNetPearls, и вы можете получить ДОПОЛНИТЕЛЬНО там.

+1

Функция VB.NET Right не будет работать, если параметр длины больше длины строки. – muratgu

+0

Это вполне может быть. Вопрос в том, какой результат мы не хотим, если попытаемся получить больше символов из строки, которую она фактически хранит. Я лично предпочитаю исключение. Но вы правы, потому что для «идеальной» копии метода нам необходимо сначала проверить длину и проверить также нулевое значение. –

+0

Я только что обновил свой ответ ... –

6

Нет встроенной функции. Вам нужно будет сделать небольшую работу. Как это:

public static string Right(string original, int numberCharacters) 
{ 
    return original.Substring(original.Length - numberCharacters); 
} 

Это будет возвращаться так же, как Right делает в VB.

Надеюсь, это вам поможет! Код, взятый с: http://forums.asp.net/t/341166.aspx/1

+0

Почему беда? – FrostyFire

5

Вы можете вызвать эту функцию из C#, импортировав пространство имен Microsoft.VisualBasic.

Но нет. Не используйте также .Right() из VB. Вместо этого используется новый метод .Substring().

3

вы можете использовать все визуальные основные специфические функции в C#

как это: -

Microsoft.VisualBasic.Strings.Right(s, 10); 

вы будете ссылаться на Microsoft.VisualBasic Ассамблею, а также.

+2

Это не лучший способ сделать это. Вы не должны полагаться на импорт сборки VB, если они не являются другим способом. – FrostyFire

+0

также функция VB полагается на функцию подстроки C#, поэтому действительно может также расширить функцию подстроки. см. http://referencesource.microsoft.com/Microsoft.VisualBasic/Strings.vb.html#0dbb15fffce19341, и когда вы нажимаете на 'Substring' strings.cs, открывается! –

+0

его не C# s, его .NET. VB lib является расширением lib, и если вы портируете код VB, который сильно использует расширение VB lib, тогда это хороший способ, или вы можете медленно переписать его в vanilla .NET. –

Смежные вопросы