Как перемешать слова в строке?

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 204
Благодарностей
74
Баллы
48
Как в переменной в которой текст, поменять слова местами,перемешать их как-нибудь?
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
Вот вики по обработке текста http://zennolab.com/wiki/ru:actions:text

Поможет расширенный SPINTAX(галочку поставь).

Код:
Вот пример предложения, в котором надо поменять слова.
Нам нужно создать такую конструкцию.
Код:
[Вот |пример |предложения, |в |котором |надо |поменять |слова].
Данная конструкция меняет местами все слова, кроме точки.

Как это сделать? Исползуем екшн замена.
Заменить {-String.Space-}
на {-String.Space-}|
 
  • Спасибо
Реакции: Lover

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 204
Благодарностей
74
Баллы
48
Т.е. надо сделать 2 действия?
1 в пробелы поставить |
2 а потом через расширенный спинтакс перемешать?
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113
  • Спасибо
Реакции: AndreyAAA

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 204
Благодарностей
74
Баллы
48

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 204
Благодарностей
74
Баллы
48
А вот как положить в скобки забыл спросить.
 

AndreyAAA

Client
Регистрация
07.05.2016
Сообщения
1 204
Благодарностей
74
Баллы
48

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 328
Благодарностей
5 431
Баллы
113

Uralbox

Client
Регистрация
04.02.2019
Сообщения
39
Благодарностей
0
Баллы
6
Подскажите как в зенке на C# или стандартными возможностями можно:
поменять слова местами в переменной - name
исходный текст - Саймак Клиффорд
Сделать так - Клиффорд Саймак

Но если будет так: Саймак Клиффорд Младший, то чтобы так - Клиффорд Саймак Младший
т.е 3тье слово всегда оставалось третим
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ну если сильно не заморачиваться, то определить сколько слов, если 2 то меняем местами, если три то первые два меняем
 
  • Спасибо
Реакции: Sergodjan

Uralbox

Client
Регистрация
04.02.2019
Сообщения
39
Благодарностей
0
Баллы
6
ну если сильно не заморачиваться, то определить сколько слов, если 2 то меняем местами, если три то первые два меняем
ага, но как реализовать? Не силён в C#
 

Uralbox

Client
Регистрация
04.02.2019
Сообщения
39
Благодарностей
0
Баллы
6
Код:
string str = project.Variables["name"].Value;
var qqq = str.Split(' ').ToList();
string q1 = qqq[0];
string q2 = qqq[1];
string q3 = qqq[2];
project.Variables["name"].Value = q2+" "+q1+" "+q3;
Есть такой код, но он работает только с 3мя словами, если 2 слова - то выдаёт ошибку
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Код:
string str = project.Variables["name"].Value;
var qqq = str.Split(' ').ToList();
string q1 = qqq[0];
string q2 = qqq[1];
string q3 = qqq[2];
project.Variables["name"].Value = q2+" "+q1+" "+q3;
Есть такой код, но он работает только с 3мя словами, если 2 слова - то выдаёт ошибку
после строки 2 поставь if, если больше 2 то твой код должен отработать, если меньше то две строки только меняй
 

Uralbox

Client
Регистрация
04.02.2019
Сообщения
39
Благодарностей
0
Баллы
6

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
а можно код пожалуйста?
C#:
string str = "Саймак Клиффорд";
string[] qqq = str.Split(' ');
if (qqq.Length > 2)
{
    string q1 = qqq[0];
    string q2 = qqq[1];
    string q3 = qqq[2];
    return q2+ " " +q1+ " " +q3;
}
else
{
    string q1 = qqq[0];
    string q2 = qqq[1];
    return q2+ " " +q1;
}
 

Uralbox

Client
Регистрация
04.02.2019
Сообщения
39
Благодарностей
0
Баллы
6
C#:
string str = "Саймак Клиффорд";
string[] qqq = str.Split(' ');
if (qqq.Length > 2)
{
    string q1 = qqq[0];
    string q2 = qqq[1];
    string q3 = qqq[2];
    return q2+ " " +q1+ " " +q3;
}
else
{
    string q1 = qqq[0];
    string q2 = qqq[1];
    return q2+ " " +q1;
}
можно пример с переменной?
P.s разобрался, огромное спасибо
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
  • Спасибо
Реакции: RomanBilica и Uralbox

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ну или так

C#:
string str = "Саймак Клиффорд";
string[] arr = str.Split(' ');
if (arr.Length > 2)
{
    return arr[1] + " " + arr[0] + " " + arr[2];
}
else
{
    return arr[1] + " " + arr[0];
}
 
  • Спасибо
Реакции: Uralbox

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