Как использовать метод Mid в C#?

Я программирую код, настроенный для продуктов системы инвентаря. Восток формируется начиная с союза последних 4 цифр штрих-кода продукта, дата и авточисловой 3 цифр.

Пример:

C. Barras:    785DEAD-987ED4632
Fecha:        01/08/2017
Autonumérico: 001

CÓDIGO:       463201082017001

Для этого я хочу использовать метод Mid (потому что это уникум, который я знаю), чтобы отрезать цепи текста. Но поместив это, он посылает мне ошибку, которая не распознает этот метод. Возможно кто-то, кто находит прошлое, это смогло помогать мне.

Мой код:

public string retKey(string bar, string date, string aut) {
     string tmp, keyRet;
     tmp = Mid(bar, bar.Length - 4, 4);//Aqui intento usar el Mid
     keyRet = tmp;
     tmp = date.Replace('/', '');
     keyRet = keyRet + tmp + aut;
     return keyRet;
}
1
задан 09.01.2017, 04:04
4 ответа

Mid это не распознает, из-за которого его один método Visual Basic и не C#. Только ты должен касаться Книжный магазин Microsoft.VisualBasic твоего проекта и я заношу в список funcionarà ¡...

ты можешь проверять documentaci¦n: https://msdn.microsoft.com/es-es/library/8kyd8789 (v=vs.110) .aspx

0
ответ дан 24.11.2019, 11:43

Как хорошо он сказал @Michael , Mid - funci¦n Visual Basic. И, действительно, ты можешь использовать это с C#, включая librer¦ - в Microsoft.VisualBasic в твой проект.

, Но, чтобы мочь использовать это правильно, ты должен делать немного mÃ: в.

Strings. Mid такие

Как Mid estÃ: определенный как funci¦n estÃ: костариканская класса Strings, ты должен включать класс Strings в решение.

Пример:

using Microsoft.VisualBasic;

// ...

tmp = Strings.Mid(bar, bar.Length - 4, 4);

Static import

Si ты хочешь использовать это равно как в VB, или же, без Strings. напротив, ты можешь делать это с static import .

Пример:

using static Microsoft.VisualBasic.Strings;

// ...

tmp = Mid(bar, bar.Length - 4, 4);

, Исправляя использование Mid, чтобы возвращать 4 últimos символы

Как только тебе удалось использовать Mid, ты поймешь, что не estÃ: s используя правильно. Решение:

tmp = Mid(bar, bar.Length - 4, 4);

... не возвращает últimos 4 символа цепи. Например, с цепью 785DEAD-987ED4632, тебе будет возвращать решение D463, не 4632.

, Чтобы возвращать 4 últimos символы, правильное решение:

tmp = Mid(bar, bar.Length - 3, 4);

... или просто:

tmp = Mid(bar, bar.Length - 3);

Лучшая альтернатива: Right ()

, Если estÃ: s подготовленный использовать одну из функций VB, я предлагаю тебе использовать Right() вместо Mid(). Ваше использование гораздо проще для твоего situaci¦n. Если ты хочешь извлечь últimos 4 символа цепи, решение просто:

using static Microsoft.VisualBasic.Strings;

// ...

tmp = Right(bar, 4);

Альтернатива, не используя Microsoft. VisualBasic

И в конце концов, если ты хочешь сделать то же самое, не завися от librer¦ - в Microsoft.VisualBasic, ты можешь использовать String.Substring() таким образом:

tmp = bar.Substring(bar.Length - 4);
5
ответ дан 24.11.2019, 11:43

Если estÃ: s используя C#, también ты можешь создавать один método Extensi¦n .

Ser¦ - a немного as¦-:

namespace Bau.Extensors
{
    public static class StringExtensor
    {
      public static string Mid(this string strSource, int intFirst, int intLength)
      { if (string.IsNullOrEmpty(strSource))
            return "";
        else if (intFirst > strSource.Length)
            return "";
        else
            { if (intFirst + intLength > strSource.Length)
                intLength = strSource.Length - intFirst; 
              return strSource.Substring(intFirst, intLength);
            }
      }
   }
}

не забывай использовать один using Bau.Extensors в классах, где ты использовал método extensi¦n.

0
ответ дан 24.11.2019, 11:43

Тебе оставило способ работать то, что ты хочешь в C#, ввиду того, что есть много функций, которые делают работу, которую ты ищешь и не обязательно нуждаешься в funci¦n Mid().

public string retKey(string bar, string date, string aut) {
  if (string.IsNullOrEmpty(bar) || string.IsNullOrEmpty(date) || string.IsNullOrEmpty(aut)) {
    // Haz algo para alertar al usuario.
  }
  return (bar.Substring(bar.Length - 4) + date.Replace('/', '\0') + aut);
}

Где:

  • string.Substring(int): Сформируй нового string начиная с posici¦n, который ты переместил из-за параметра.
  • if состоял s¦lo, чтобы санкционировать в том, чтобы никакая цепь не произошла с funci¦n vac¦ - в.
  • date.Replace('/', '\0') я поместил '\0' ввиду того, что C# не допускает буквальные vac¦-эксперт, когда говорится о символах.

Из шага оставил тебе fiddle: https://dotnetfiddle.net/Ds4CXs :)

0
ответ дан 24.11.2019, 11:43

Теги

Похожие вопросы