Регистр сменить не сложно, даже без C#.
Если важен C#, то вот:
// Текст для обработки
string text = project.ExecuteMacro("цу цуу цу цу цу");
// Обработка текста "ToUpper"
project.Variables["res"].Value = Macros.TextProcessing.ToUpper(text, "FirstLetters");
А вот выстроить какой то алгоритм универсальный, это уже задача по-сложнее. Пока затрудняюсь выстроить какой то такой универсальный алгоритм. При малейшем изменении во вх. тексте, все опять рухнет. Может знатоки C# подтянутся, подскажут?
@Alexmd @BAZAg @doc Призываю вас!
Я такие задачки решал бы примерно так, как описал ниже, так как составлять регулярки пока не научился.
Однозначно понимаю, что вполне условия могут продолжать меняться, из-за чего просто выносил бы дополнительные проверки в функции, и дергал бы их в зависимости от условия, расставляя маркеры того, что наступило то или иное состояние.
Подобную задачу недавно изучал
тут, но, для своих целей применял её по другому.
Если же условие больше меняться не будет - то вариант ниже может решить эту проблему.
Func<char,bool> Check = (c) => { // Проверка что входит в диапазон a-zA-Z
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) return true;
return false;
};
Func<char,bool> Check2 = (c) => { // Проверка что буква заглавная
if ((c >= 'А' && c <= 'Я') || (c >= 'A' && c <= 'Z')) return true;
return false;
};
string line = "Каминная-Вытяжка Русь MGB915 БЕЛАЯ";
line = "Каминная вытяжка MAUNFELD DREAM 60 ТЕМНОБЕЖЕВОЕ стекло";
line = "Каминная вытяжка Русь MGB915 БЕЛАЯ";
bool check_first = false; // Маркер что прошли пробел и нужно две проверки
for(int i =0; i< line.Length;i++) {
char x = line[i]; // взяли символ
if(x == ' ') check_first = true; // Если это пробел - значит прошли первое слово
bool check = false;
if(!check_first) { // Если первое слово не пройдено - смотрим входит ли символ в диапазон a-zA-Z
check = Check(x);
if(check) return line.Remove(i); // Если входит - возвращаем результат от начала строки до этого символа
}
else {
check = Check2(x); // если буква заглавная
if(check) return line.Remove(i); // Если входит - возвращаем результат от начала строки до этого символа
check = Check(x); // если диапазон a-zA-Z
if(check) return line.Remove(i); // Если входит - возвращаем результат от начала строки до этого символа
}
}
return line; // если не встретились символы, по которым нужно отрезать конец