C# проверка последнего символа в переменной

n1k0la

Новичок
Регистрация
13.08.2021
Сообщения
8
Благодарностей
0
Баллы
1
Здравствуйте люди добрые. Прошу помогите пожалуйста мне кто может. Мне необходимо узнать как пишется скрипт-условие - в зависимости на какой символ заканчивается значение такой-то переменной(пусть будет "Pars"), выполняется определенное действие, в моем случае должно печататься значение из другой соответсвующей этому символу переменной. Т.е. если значение переменной "Pars" заканчивается символом "b", то печатается-выводится (или выводится в другую переменную) на экран значение из переменной 1, если заканчивается на "c" то выводится значение из переменной 2, если на "d" то из 3. А если значение заканчивается на "a" то происходит удаление последнего символа из переменной "pars". Имеется в виду что переменные 1,2,3 заготовлены мной заранее. Прошу пожалуйста, напишите пример написания скрипта по моему вышеизложенному вопросу, я просто вообще деревянный новичек и синтаксиса, т.е. правильного написания кода не знаю, поэтому в качестве подсказки нужен именно пример написания.

На другом форуме подсказали код (+ один отзывчивый, порядочный фрилансер, помог разобраться, как прописывается в код значение моей переменной).
Итак пока нашлось вот такое решение:

string text = "какой-то текст";

char lastChar = text[text.Length - 1]; // последний символ "a"

if (lastChar == 'a')
{
// делаем одно
}
else if(lastChar== 'b')
{
// делаем другое
}

его мне подправили т.е. вместо "какой-то текст" нужно было ввести значение моей переменной, получилось:

string text = project.Variables["pars"].Value;

char lastChar = text[text.Length - 1]; // последний символ "a"

if (lastChar == 'a')
{
// делаем одно
}
else if(lastChar == 'b')
{
// делаем другое
}

где "pars" имя моей переменной, значение которой я предварительно спарсиваю с последнего сообщения на странице интернет ресурса. Как мне теперь прописать действие(в строку после первого условия), чтобы из моей переменной "pars" если она заканчивается на символ "a", удалился последний символ, и чтобы теперь значение переменной "pars" стало к примеру не Ivanova, а Ivanov? И как верно мне написать второе действие, чтобы при выполнении второго условия записывалось значение из переменной "1"(эта переменная заранее мной заготовлена) в переменную "output", анологичным образом уже пропишется третье действие, т.е. если значение переменной "pars" заканчивается на символ "с", то записывается значение из переменной "2" в переменуую "output".
Где то нашел про удаление:

string text = project.Variables["pars"].Value;

char lastChar = text[text.Length - 1]; // последний символ "a"

if (lastChar == 'a')
{
var strDescription = project.Variables["pars"].Value;
strDescription = strDescription.Substring(0,(strDescription.Length - 1));
}

ставлю галочку выводить результат в переменную, в качестве переменной выбираю "pars" (пробывал и в новую переменную записывать, результат тот же), значение переменной "pars" меняется с "Ivanova" на "ok", а нужно чтобы было "Ivanov".

также пробывал такое решение:

string text = project.Variables["pars"].Value;

char lastChar = text[text.Length - 1]; // последний символ "a"

if (lastChar == 'a')
{
var strDescription = project.Variables["pars"].Value;
strDescription = strDescription.Remove((strDescription.Length - 1));
}

результат к сожалению аналогичный, значение переменной "pars" меняется c "Ivanova" меняется на "ok".
И такое:

string text = project.Variables["pars"].Value;

char lastChar = text[text.Length - 1]; // последний символ "a"

if (lastChar == 'a')
{
string text = project.ExecuteMacro(project.Variables["pars"].Value);
project.Variables["pars"].Value = Macros.TextProcessing.Replace(text, @"(\S|\s)(?=$)", "", "Regex", "First");
}

выдает сообщение об ошибке:
Компиляция кода Ошибка в действии "CS0136" "Невозможно объявить локальную переменную с именем "text" в этой области действия, так как она придаст другое значение "text", которая уже используется в области действия "родительский или текущий" для обозначения чего-то другого". [Строка: 6; Cтолбец: 8]

Пожалуйста не судите строго меня неумеху, неграмотного, а кто может помогите. Я что смог нагуглил, но все тщетно.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 232
Благодарностей
572
Баллы
113
Перечитал два раза, не понял, но пытаюсь понять. Попытаюсь объяснить.

C#:
var input = project.Variables["pars"].Value; //Объявляем переменную.

var lastChar = input[input.Length-1]; //Берем последний символ, переводим его в строку

switch (lastChar) //Начинаем обработчик
{
    //Если заканчивается на а
    case 'a':
        var tmpText = input.Substring(0, input.Length-1); //объявляем переменную, которая равна изначальному тексту без последнего символа
        project.Variables["result"].Value = tmpText;//кладем ее в переменную проекта
        break; //Выходим из switch-case
        
    //Если заканчивается на b
    case 'b':
        project.Variables["result"].Value = project.Variables["var1"].Value; //В переменную "result" кладем данные из переменной "var1"
        break; //Выходим из switch-case
    
    //Если заканчивается на c
    case 'c':
        project.Variables["result"].Value = project.Variables["var2"].Value; //В переменную "result" кладем данные из переменной "var2"
        break; //Выходим из switch-case
    
    //Если заканчивается на d
    case 'd':
        project.Variables["result"].Value = project.Variables["var3"].Value; //В переменную "result" кладем данные из переменной "var3"
        break; //Выходим из switch-case
    
    //Если не заканчивается на вышеперечисленные.
    default:
        project.Variables["result"].Value = "Мы скушали ошибку.";
        break;
    
}
 

Вложения

  • Спасибо
Реакции: n1k0la

n1k0la

Новичок
Регистрация
13.08.2021
Сообщения
8
Благодарностей
0
Баллы
1

n1k0la

Новичок
Регистрация
13.08.2021
Сообщения
8
Благодарностей
0
Баллы
1
Перечитал два раза, не понял, но пытаюсь понять. Попытаюсь объяснить.

C#:
var input = project.Variables["pars"].Value; //Объявляем переменную.

var lastChar = input[input.Length-1]; //Берем последний символ, переводим его в строку

switch (lastChar) //Начинаем обработчик
{
    //Если заканчивается на а
    case 'a':
        var tmpText = input.Substring(0, input.Length-1); //объявляем переменную, которая равна изначальному тексту без последнего символа
        project.Variables["result"].Value = tmpText;//кладем ее в переменную проекта
        break; //Выходим из switch-case
       
    //Если заканчивается на b
    case 'b':
        project.Variables["result"].Value = project.Variables["var1"].Value; //В переменную "result" кладем данные из переменной "var1"
        break; //Выходим из switch-case
   
    //Если заканчивается на c
    case 'c':
        project.Variables["result"].Value = project.Variables["var2"].Value; //В переменную "result" кладем данные из переменной "var2"
        break; //Выходим из switch-case
   
    //Если заканчивается на d
    case 'd':
        project.Variables["result"].Value = project.Variables["var3"].Value; //В переменную "result" кладем данные из переменной "var3"
        break; //Выходим из switch-case
   
    //Если не заканчивается на вышеперечисленные.
    default:
        project.Variables["result"].Value = "Мы скушали ошибку.";
        break;
   
}
А вот ваш код заработал так как нужно!!! Респектище вам за такие знания, и столь скоротечный ответ! Вам помогал чатгпт, или вы сами сваяли такое решение? От всей души вам огроменное спасибо! В полной мере еще не протестил, т.к. доделывать еще многое нужно, но главное что тестанув первых 2 условия, результат тот что и требовался!
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 785
Благодарностей
1 949
Баллы
113
на какой символ заканчивается значение такой-то переменной
Можно и так сделать если искать не только символ а и часть текста
C#:
string text = "Полный текст";
string checkText = "текст";

bool check = text.EndsWith(checkText);

if (check)
{
    // нужные действия если true
}
else
{
    // Действия если false
}
 
  • Спасибо
Реакции: n1k0la

n0n3mi1y

Client
Регистрация
08.03.2017
Сообщения
1 232
Благодарностей
572
Баллы
113
А вот ваш код заработал так как нужно!!! Респектище вам за такие знания, и столь скоротечный ответ! Вам помогал чатгпт, или вы сами сваяли такое решение? От всей души вам огроменное спасибо! В полной мере еще не протестил, т.к. доделывать еще многое нужно, но главное что тестанув первых 2 условия, результат тот что и требовался!
Сам. Обратите еще внимание на решение выше, там предложена проверка не на последний символ, а на текст.
 
  • Спасибо
Реакции: n1k0la

radv

Client
Регистрация
11.05.2015
Сообщения
3 785
Благодарностей
1 949
Баллы
113
Сам. Обратите еще внимание на решение выше, там предложена проверка не на последний символ, а на текст.
Еще можно и текст из одного символа оставить и будет универсальное решение. А если EndsWith заменить на Contains то можно искать в любом месте, а не только в конце.
 
  • Спасибо
Реакции: n0n3mi1y и n1k0la

Семен12

Client
Регистрация
22.07.2019
Сообщения
51
Благодарностей
12
Баллы
8
результат к сожалению аналогичный, значение переменной "pars" меняется c "Ivanova" меняется на "ok".
Что-то сначала тоже не понял, почему ok в конце пишет, вместо значения. Потом понял, что нету строчки возвращения значения в нужную переменную после обработки


C#:
string text = project.Variables["URL"].Value;

char lastChar = text[text.Length - 1]; // последний символ "/"

if (lastChar == '/')
{
var strDescription = project.Variables["URL"].Value;
project.Variables["Variable2"].Value = strDescription.Remove((strDescription.Length - 1));
    return project.Variables["Variable2"].Value;
}
Вообщем для таких же нубов как и я.
P.S Если совпадений нет - новая переменная останется пустой
P.S.S Метод удаляет сконца урла слеш '/"
 
Последнее редактирование:

alex50rus

Новичок
Регистрация
25.10.2020
Сообщения
1
Благодарностей
0
Баллы
1
А если хотите забить на Uppercase, то
c#:
            string text_ = "опА";
            if (text_.ToLower().EndsWith("па"))
                Console.WriteLine("па-па");
            else
                Console.WriteLine("опа");
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 786
Благодарностей
2 450
Баллы
113
Что-то сначала тоже не понял, почему ok в конце пишет, вместо значения. Потом понял, что нету строчки возвращения значения в нужную переменную после обработки


C#:
string text = project.Variables["URL"].Value;

char lastChar = text[text.Length - 1]; // последний символ "/"

if (lastChar == '/')
{
var strDescription = project.Variables["URL"].Value;
project.Variables["Variable2"].Value = strDescription.Remove((strDescription.Length - 1));
    return project.Variables["Variable2"].Value;
}
Вообщем для таких же нубов как и я.
P.S Если совпадений нет - новая переменная останется пустой
P.S.S Метод удаляет сконца урла слеш '/"
Может быть такие варианты будут удобнее конкретно для такой цели (удаления слешей в конце):
C#:
return "Привет///".TrimEnd("/".ToCharArray());
C#:
project.Variables["Variable2"].Value = project.Variables["URL"].Value.TrimEnd("/".ToCharArray());
 

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