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

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

clocky

Client
Регистрация
26.09.2019
Сообщения
397
Реакции
72
Баллы
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 появляются пробелы, пробелы убрать не могу, потому что и во втором значении иногда бывают слова с пробелами..

Благодарю за помощь!
 
Давайте начнем с того, что он не должен. Он делает так ему было велено, т.е. использовал пробел как разделитель. Нужно больше примеров, штук 10 хотя бы.
 
Прошу прощения за столь частые обращения, столкнулся с проблемой, паршу строку, получаю "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
К словам пожалуйста так не придирайтесь) В любом случае, по моей логике он должен был, я же считал что сделал правильно)
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 появляется пробел, а в таблицу так еще и ' добавляет перед пробелом.
 
Последнее редактирование:
К словам пожалуйста так не придирайтесь) В любом случае, по моей логике он должен был, я же считал что сделал правильно)
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
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 символов

Ну и конечно же не обрывать смысл текста, а дойти до пробела
 
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
 

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