Substring цепи каждый специфический характер

Я получаю цепь данных посредством C#, цепь приходит из следующей формы;

string:string:string:

Что существует функция substring, которую ты можешь показывать Вам, что я схватил переводные векселя n позиция, и что столькие хотят быть взятыми, но в этом случае я нуждаюсь в том, чтобы отделить цепь в различных переменных, например:

264.1:On:Emanuel:

Вы были бы должны оставаться:

var1=264.1; var2=On; var3=Emanuel

Нужно доводить до сведения, что не известна длина, у которой будет каждая цепь, ej. здесь может быть 264.1 значение, которое Вы получаете string1, но в следующем случае Вы можете быть: Поскольку я могу определять, что я развелся string из-за ":" и я хранил их в переменных?

3
задан 06.11.2019, 04:25
3 ответа

Ты можешь использовать ее funciГіn Split (string разделитель): Вышедшие

using System;

class MainClass {
  public static void Main (string[] args) {
        string data = "264.1:On:Emanuel:";
        string[] words = data.Split(':');
        string var1,var2,var3;
        var1 = words[0];
        var2 = words[1];
        var3 = words[2];
        Console.WriteLine("var1 ="+var1);
        Console.WriteLine("var2 ="+var2);
        Console.WriteLine("var3 ="+var3);
  }
}

:

introducir la descripción de la imagen aquí

4
ответ дан 01.12.2019, 12:36
  • 1
    Твой solució n был лучшим, в небольшом количестве шагов и открытая, чтобы помещать любой характер разделителя, большое спасибо, ты помог мне много! –  panmen 07.11.2019, 00:50

Чтобы отделять или разлагать твою цепь текста в funciГіn разделителя" : ", ты можешь использовать mГ©todo Split() из типа string.

cГіdigo serГ - в следующего:

   var cadena = "264.1:On:Emanuel:";
   List<string> result = cadena.Split(':').ToList();

ObtendrГЎs список string List<string> со стоимостью, которую ты хочешь вернуть.

3
ответ дан 01.12.2019, 12:36
  • 1
    Как хорошая prá ctica: Если ты не будешь вводить новые элементы в List<string>, не необходимо называть ToList(), достаточно иметь array по отношению к руке и знанию, у которого есть элементы. –  NaCl 06.11.2019, 03:23

ВїComo я могу определять, что я развелся string из-за ":" и я хранил их в переменных?

Я Предполагаю, что ты quedarГЎs с решениями, что тебе дали их demГЎs комментарии, должный, что, решает твоя проблема формы mГЎs простая и отрезает, однако, я ты explicarГ©, что с mГ©todo substring ты можешь добиваться того же результата.

mГ©todo substring получает два parГЎmetros (tambiГ©n он может получать Гєnicamente один, porquГ© estГЎ перегруженный): Начальный Г-ndice и длина субцепи. Проблема укореняется в том, что длина цепи может меняться, поэтому, мы нуждаемся в том, чтобы создать алгоритм, который позволял бы нам вычислять начальный Г-ndice + длина субцепи, не имея значение, что у длины была цепь.

Алгоритм мы можем выдвигать это таким образом:

  • Мы Будем нуждаться в переменной, чтобы сохранять начальный Г-ndice субцепи, это очевидно, что Ваша стандартная настройка serГЎ 0.

  • Потом мы пробегаем характер из-за характера и одновременно, рассказываем символы с собирающей переменной, чтобы нам удается получить длину субцепи, все это sucederГЎ до того, чтобы находить характер :.

  • , Когда мы найдем характер :, где мы назовем в mГ©todo substring и переместим его начальный Г-ndice (что в начале serГЎ 0) + длина субцепи.

  • Из-за Гєltimo, мы должны повторно включать в 0 собирающую переменную, благодаря тому, что, мы нуждаемся в том, чтобы использовать эту переменную, чтобы получать длину любых substring . TambiГ©n мы, должно быть, обновляем начальный Г-ndice субцепи, этого добиваются со следующей ecuaciГіn: indiceInicial = i + 1. Стоимость i представляет ее posiciГіn каждого характера в цепи. Складывают 1 в i porquГ©, когда condiciГіn txt[i] == ':' будет выполнен, i tendrГЎ она posiciГіn характера : и нас не интересует эта posiciГіn, а, она posiciГіn следующий (coincidirГЎ с начальным Г-ndice prГіximo substring ).

cГіdigo в C# serГ - в:

using System;

class Program
{
    static void Main()
    {       
        int startIndex = 0; //guarda el índice inicial del substring.
        int lengthSub = 0; //guarda la longitud del substring.
        int j = 0; 
        string txt = "264.1:On:Emanuel:";
        string[] varx = new string[3];
        for(int i = 0; i != txt.Length; ++i)
        {
            //Si se encontró los dos puntos...
            if(txt[i] == ':')
            {
                //Obtenemos la subcadena y lo guardamos en varx
                varx[j++] = txt.Substring(startIndex, lengthSub);
                //Actualizamos el índice inicial de la subcadena
                startIndex = i + 1;
                //Re-inicializamos la longitud a 0
                lengthSub = 0;
            }
            else
                //Contamos cada caracter para obtener la longitud de la subcadena al momento de encontrar los dos puntos
                ++lengthSub;
        }
        Console.Write("var1: " + varx[0] + " var2: " + varx[1] + " var3: " + varx[2]);
    }
}

Может, что мой алгоритм он ушел немного lГ-neas, но это не означает, что это был плохой алгоритм. Я надеюсь, что он подает тебя.

0
ответ дан 01.12.2019, 12:36

Теги

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