Подскажите с разделителем! Спасибо!

  • Автор темы Автор темы Persis
  • Дата начала Дата начала

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Реакции
31
Баллы
28
Стоит безумно простая задача, нужно:
есть текст - мама|папа|я|и кто то|еще -
какой функцией разделить так (символ разделитель | ), чтобы получилось -
Переменная1 - мама
Переменная2 - папа
Переменная3 - я
Переменная 4 - и кто то|еще
Тоесть чтоб обрезалось только первые несколько раз (сколько нужно мне) резделителем |

Split не помогает - он режет все
 
Никто не знает?
 
C#:
Развернуть Свернуть Копировать
string text = "мама|папа|я|и кто то|еще ";
string[] chr = text.Split(new char[]{'|'});

var 1 = chr[0];

var 2 = chr[1];
и т.д.
 
  • Оценить
Реакции: Persis
C#:
Развернуть Свернуть Копировать
var textarray = project.Variables["text"].Value.Split('|').ToList();
int count = int.Parse(project.Variables["count"].Value);
for(int i = 1; i < count; i++){
    if(!project.Variables.Keys.Contains($"Переменная{i}")){
        project.Variables.GetType().GetMethod("CreateVariable").Invoke(project.Variables, new object[]{$"Переменная{i}", textarray[i-1], VariableGroupTypeV4.AutoGenerated, true});
    }
    else project.Variables[$"Переменная{i}"].Value = textarray[i-1];
    textarray.RemoveAt(0);
}
project.Variables[$"Переменная{count}"].Value = string.Join("|", textarray);
 
  • Оценить
Реакции: BAZAg
Никто не знает?

Так тем же split забирай то что надо в свои переменные, а то что осталось перебором закидывай в последнюю переменную.

C#:
Развернуть Свернуть Копировать
string line = "мама|папа|я|и кто то|еще";
string[] split = line.Split(new Char[] { '|' });
string var1 = split[0];
string var2 = split[1];
string var3 = split[2];
string var4 = "";
int s = 0;
foreach (string spl in split)
    {
    if (s < 3)
        { s++; continue; }
    var4 = var4 + split[s] + "|";
    s++;
    }

Это все на быструю руку и может выглядеть грубо конечно, но в целом решит сейчас твою задачу.
 
C#:
Развернуть Свернуть Копировать
string text = "мама|папа|я|и кто то|еще";
string[] chr = text.Split(new char[]{'|'});
int count = 3;
for(int i = 0; i < count; i++)
{
    var ni = chr[i];
    project.SendInfoToLog(ni);
}
string last = text.Substring(chr[count].Length+count+1,text.Length-(chr[count].Length+count+1));
project.SendInfoToLog(last );
 
Последнее редактирование:
C#:
Развернуть Свернуть Копировать
string text = "мама|папа|я|и кто то|еще";

string[] chr = text.Split(new char[]{'|'});
int count = 3;
for(int i = 0; i < count; i++)
{
    var ni = chr[i];
    project.SendInfoToLog(ni);
}

string last = string.Empty;
for(int i = count; i < chr.Length; i++)
{
    last = text.Substring(chr[count].Length+count+1,text.Length-(chr[count].Length+count+1));
}

где куда какие переменные ставить? мой текст тоже берется из переменной
я думал я может какой то кубик упускаю для такой элементарной задачи
 
C#:
Развернуть Свернуть Копировать
var textarray = project.Variables["text"].Value.Split('|').ToList();
int count = int.Parse(project.Variables["count"].Value);
for(int i = 1; i < count; i++){
    if(!project.Variables.Keys.Contains($"Переменная{i}")){
        project.Variables.GetType().GetMethod("CreateVariable").Invoke(project.Variables, new object[]{$"Переменная{i}", textarray[i-1], VariableGroupTypeV4.AutoGenerated, true});
    }
    else project.Variables[$"Переменная{i}"].Value = textarray[i-1];
    textarray.RemoveAt(0);
}
project.Variables[$"Переменная{count}"].Value = string.Join("|", textarray);

где куда какие переменные ставить? мой текст тоже берется из переменной
я думал я может какой то кубик упускаю для такой элементарной задачи
 
где куда какие переменные ставить? мой текст тоже берется из переменной
я думал я может какой то кубик упускаю для такой элементарной задачи
Код многофункциональный - сам создаст переменные - Вы же хотели в Переменная 1 и тп - так задача была и сделана.
P.S. В целом, обычно так не решается эта задача - нужно разбивать по разделителю, складывать в какой-то список, и уже из списка брать по строкам - так как если будет там например 10-ток переменных - сложно будет их использовать, не понимая какие конкретно переменные уже существуют, а какие нет.
 
есть у кого нормальное решение? Чтоб не изучать сейчас C#
 
есть у кого нормальное решение? Чтоб не изучать сейчас C#
здесь надо сначала понять, что в вашем понимании нормальное решение ) типа на кубиках без строчки кода? )
 
ну да, человек же прямо об этом сказал )

он все режет, режет то что резать не нужно
а как его остановить хз

приведите пример, а я скажу что сделать чтобы не резал
 
здесь надо сначала понять, что в вашем понимании нормальное решение ) типа на кубиках без строчки кода? )
да хоть что))
есть переменная {-Variable.diannie-} - в ней содержится - мама|папа|я|и кто то|еще
нужно!

{-Variable.inser1-} - мама
{-Variable.inser2-} - папа
{-Variable.inser3-} - я
{-Variable.inser4-} - и кто то|еще


где {-Variable.inser4-} содержит разделительный знак
 
Чтоб не изучать сейчас C#
1)

NP8EraZ.png


2)

IVgDnKM.png


3)
L4FTQOc.png
 
Стоит безумно простая задача, нужно:
есть текст - мама|папа|я|и кто то|еще -
какой функцией разделить так (символ разделитель | ), чтобы получилось -
Переменная1 - мама
Переменная2 - папа
Переменная3 - я
Переменная 4 - и кто то|еще
Тоесть чтоб обрезалось только первые несколько раз (сколько нужно мне) резделителем |

Split не помогает - он режет все
C#:
Развернуть Свернуть Копировать
string text =  project.Variables["diannie"].Value; // мама|папа|я|и кто то|еще
int count = int.Parse(project.Variables["count"].Value); // Сколько штук берем спереди
string sp = project.Variables["split"].Value; // Разделитель
string[] data = text.Split(new[]{sp}, count, StringSplitOptions.None);

project.Variables["inser1"].Value =data.Length > 0 ? data[0] : string.Empty;
project.Variables["inser2"].Value =data.Length > 1 ? data[1] : string.Empty;
project.Variables["inser3"].Value=data.Length > 2 ? data[2] : string.Empty;
project.Variables["inser4"].Value=data.Length > 3 ? data[3] : string.Empty;
98800
98801
 
C#:
Развернуть Свернуть Копировать
string text =  project.Variables["diannie"].Value; // мама|папа|я|и кто то|еще
int count = int.Parse(project.Variables["count"].Value); // Сколько штук берем спереди
string sp = project.Variables["split"].Value; // Разделитель
string[] data = text.Split(new[]{sp}, count, StringSplitOptions.None);

project.Variables["inser1"].Value =data.Length > 0 ? data[0] : string.Empty;
project.Variables["inser2"].Value =data.Length > 1 ? data[1] : string.Empty;
project.Variables["inser3"].Value=data.Length > 2 ? data[2] : string.Empty;
project.Variables["inser4"].Value=data.Length > 3 ? data[3] : string.Empty;
Посмотреть вложение 98800
Посмотреть вложение 98801
Идеально работает! вот то что нужно! Главное понятно до ужаса! Супер большое спасибо
+657249 к карме
Спасибо
 
  • Оценить
Реакции: BAZAg

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)