Как разделить переменную на несколько? (хитрый разделитель)

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
Прошу прощения за столь частые обращения, столкнулся с проблемой, паршу строку, получаю "Mercedes Benz - 300 - 3.0" кладу в переменную, затем split стоял "{-String.Space-}-" но именно этот пример он делит на 1) Mercedes 2)Benz 3) 300 , а должен 1) Mercedes Benz 2)300 3) 3.0 , если ставлю просто - , то перед 300 и 3,0 появляются пробелы, пробелы убрать не могу, потому что и во втором значении иногда бывают слова с пробелами..

Благодарю за помощь!
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113
Давайте начнем с того, что он не должен. Он делает так ему было велено, т.е. использовал пробел как разделитель. Нужно больше примеров, штук 10 хотя бы.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 433
Благодарностей
9 128
Баллы
113
Прошу прощения за столь частые обращения, столкнулся с проблемой, паршу строку, получаю "Mercedes Benz - 300 - 3.0" кладу в переменную, затем split стоял "{-String.Space-}-" но именно этот пример он делит на 1) Mercedes 2)Benz 3) 300 , а должен 1) Mercedes Benz 2)300 3) 3.0 , если ставлю просто - , то перед 300 и 3,0 появляются пробелы, пробелы убрать не могу, потому что и во втором значении иногда бывают слова с пробелами..

Благодарю за помощь!
Действие "Обработка текста - Split" подразумевает использование перечисления разделителей, поэтому в нем не получится указывать последовательность символов, например пробел-дефис-пробел, т.к. они будут использованы все для разделения (будет разделение по каждому символу отдельно). В разделителе попробуйте использовать дефис и вторым действием делать Trim выходным переменным.

Для удобства можно для Trim использовать C# код, чтобы обработка была в одном кубике, а не в трех отдельных кубиках "Обработка текста - Trim".
C#:
project.Variables["v1"].Value = Macros.TextProcessing.Trim(project.Variables["v1"].Value, "Full");
project.Variables["v2"].Value = Macros.TextProcessing.Trim(project.Variables["v2"].Value, "Full");
project.Variables["v3"].Value = Macros.TextProcessing.Trim(project.Variables["v3"].Value, "Full");
 
Последнее редактирование:
  • Спасибо
Реакции: clocky

clocky

Client
Регистрация
26.09.2019
Сообщения
363
Благодарностей
48
Баллы
28
К словам пожалуйста так не придирайтесь) В любом случае, по моей логике он должен был, я же считал что сделал правильно)
Land Rover - Range Rover Evoque - 2.2 tdi
должно быть
1) Land Rover
2) Range Rover Evoque
3) 2.2 tdi

Он мне выдает, если поставить пробел с -
1)Land
2)Rover
3)Range

а если я ставлю просто - как разделитель, то перед Range Rover Evoque и
2.2 tdi появляется пробел, а в таблицу так еще и ' добавляет перед пробелом.
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 528
Благодарностей
1 324
Баллы
113
К словам пожалуйста так не придирайтесь) В любом случае, по моей логике он должен был, я же считал что сделал правильно)
Land Rover - Range Rover Evoque - 2.2 tdi
должно быть
1) Land Rover
2) Range Rover Evoque
3) 2.2 tdi

Он мне выдает, если поставить пробел с -
1)Land
2)Rover
3)Range

а если я ставлю просто - как разделитель, то перед Range Rover Evoque и
2.2 tdi появляется пробел, а в таблицу так еще и ' добавляет перед пробелом.
C# кубик
C#:
var x = project.Variables["AA3_UnixTime"].Value; // тут переменная с вашим текстом Land Rover - Range Rover Evoque - 2.2 tdi

string[] y = x.Split(new[] {" - "},StringSplitOptions.None).ToArray(); // разделитель

project.Variables["AA0"].Value = y[0]; // переменная 1
project.Variables["AA1"].Value = y[1]; // переменная 2
project.Variables["AA2"].Value = y[2]; // переменная 3
 
Последнее редактирование:
  • Спасибо
Реакции: clocky

_HEDELKA_

Client
Регистрация
20.02.2022
Сообщения
648
Благодарностей
170
Баллы
43
C# кубик
C#:
var x = project.Variables["AA3_UnixTime"].Value; // тут переменная с вашим текстом Land Rover - Range Rover Evoque - 2.2 tdi

string[] y = x.Split(new[] {" - "},StringSplitOptions.None).ToArray(); // разделитель

project.Variables["AA0"].Value = y[0]; // переменная 1
project.Variables["AA1"].Value = y[1]; // переменная 2
project.Variables["AA2"].Value = y[2]; // переменная 3
Подскажите а можно заменить разделитель на количество символов?
Пример:
Текст 239 символов мне всегда нужно делить на 100
1 переменная = 100 символов
2 переменная = 100 символов
3 переменная = 39 символов

Ну и конечно же не обрывать смысл текста, а дойти до пробела
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113
C#:
string text = @"Подскажите а можно заменить разделитель на количество символов?
Пример:
Текст 239 символов мне всегда нужно делить на 100
1 переменная = 100 символов
2 переменная = 100 символов
3 переменная = 39 символов

Ну и конечно же не обрывать смысл текста, а дойти до пробела";
int part = 100;
while(text.Length > part){
    int indexOfSpace = text.Substring(0, part).LastIndexOf(' ');
    string substring = text.Substring(0, indexOfSpace);
    text = text.Remove(0, indexOfSpace).Trim();
    project.SendInfoToLog($"{substring.Length}: {substring}");
};
project.SendInfoToLog($"{text.Length}: {text}");
1671702014235.png
 

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