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

Persis

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

Split не помогает - он режет все
 

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28
Никто не знает?
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
C#:
string text = "мама|папа|я|и кто то|еще ";
string[] chr = text.Split(new char[]{'|'});

var 1 = chr[0];

var 2 = chr[1];
и т.д.
 
  • Спасибо
Реакции: Persis

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 423
Баллы
113
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

ValMax

Client
Регистрация
01.12.2018
Сообщения
31
Благодарностей
8
Баллы
8
Так тем же 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++;
    }
Это все на быструю руку и может выглядеть грубо конечно, но в целом решит сейчас твою задачу.
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
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 );
 
Последнее редактирование:

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28
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));
}
где куда какие переменные ставить? мой текст тоже берется из переменной
я думал я может какой то кубик упускаю для такой элементарной задачи
 

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28
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

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
где куда какие переменные ставить? мой текст тоже берется из переменной
я думал я может какой то кубик упускаю для такой элементарной задачи
Код многофункциональный - сам создаст переменные - Вы же хотели в Переменная 1 и тп - так задача была и сделана.
P.S. В целом, обычно так не решается эта задача - нужно разбивать по разделителю, складывать в какой-то список, и уже из списка брать по строкам - так как если будет там например 10-ток переменных - сложно будет их использовать, не понимая какие конкретно переменные уже существуют, а какие нет.
 

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28
есть у кого нормальное решение? Чтоб не изучать сейчас C#
 

Shogo

Client
Регистрация
07.04.2015
Сообщения
478
Благодарностей
100
Баллы
43

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28

ValMax

Client
Регистрация
01.12.2018
Сообщения
31
Благодарностей
8
Баллы
8
есть у кого нормальное решение? Чтоб не изучать сейчас C#
здесь надо сначала понять, что в вашем понимании нормальное решение ) типа на кубиках без строчки кода? )
 

Shogo

Client
Регистрация
07.04.2015
Сообщения
478
Благодарностей
100
Баллы
43
ну да, человек же прямо об этом сказал )

он все режет, режет то что резать не нужно
а как его остановить хз
приведите пример, а я скажу что сделать чтобы не резал
 

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28
здесь надо сначала понять, что в вашем понимании нормальное решение ) типа на кубиках без строчки кода? )
да хоть что))
есть переменная {-Variable.diannie-} - в ней содержится - мама|папа|я|и кто то|еще
нужно!

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


где {-Variable.inser4-} содержит разделительный знак
 

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28

dimafatality

Client
Регистрация
19.01.2014
Сообщения
265
Благодарностей
255
Баллы
63

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
Стоит безумно простая задача, нужно:
есть текст - мама|папа|я|и кто то|еще -
какой функцией разделить так (символ разделитель | ), чтобы получилось -
Переменная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
 

Persis

Client
Регистрация
03.04.2022
Сообщения
239
Благодарностей
30
Баллы
28
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

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
  • Спасибо
Реакции: Alexmd

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