Member 13378284 Ответов: 3

Как разделить double и string в переменной C#


Я думаю, что еще не видел таких проблем, когда искал в интернете.

есть ли способ разделить double и string, когда они хранятся в одной строковой переменной??

например у меня есть

string blabla = "4.2 Minutes";


вот что я хочу знать, например. 4.2 будет храниться в переменных "цифрах", а минуты будут храниться в переменных"буквах".
разве это возможно?

Что я уже пробовал:

Я пробовал использовать регулярное выражение.

string cutie = "4.5 Minutes";
Regex re = new Regex(@"([a-zA-Z]+)(\d+)");
Match result = re.Match(cutie);
string letters = result.Value;
string numbers = result.Value;


Ну, что-то вроде этого, но это не работает.

BillWoodruff

Можете ли вы изменить формат строки ? Можете ли вы предположить, что строка всегда находится в одном и том же формате ? Является ли использование RegX обязательным требованием ? Вы хотите изменить данные на временной интервал ?

3 Ответов

Рейтинг:
21

Tony Hill

Если вы все еще хотите использовать регулярное выражение, попробуйте сделать следующее.

String blabla = "4.2 Minutes";

Regex regex = new Regex(@"^(?<NUMVALUE>\d*.\d*)\s*(?<STRVALUE>[A-Z][a-z]*)$", RegexOptions.Singleline);

Match match = regex.Match(blabla);

if(match.Success)
{
    String numbers = match.Groups["NUMVALUE"].Value;
    String letters = match.Groups["STRVALUE"].Value;

    Console.WriteLine(numbers);
    Console.WriteLine(letters);
}
else
{
    Console.WriteLine("Not matched");
}


Рейтинг:
12

Sheila Pontes

Привет,

К вашему примеру, приведенному выше, сделайте следующее:

private bool is_double(string val)
{
    try
    {
        Convert.ToDouble(val);
        return true;
    }
    catch
    {
        return false;
    }
}

private void separate_word()
{
   string text = "4.2 Minutes";
   string[] arr = text.Split(' ');

   string letter, number;

    foreach(string item in arr)
    {
        if(this.is_double(item))
        {
            number = item;
        }
        else
        {
            letter = item;
        }
    }
}


BillWoodruff

это.is_double(пункт) ... это должно быть ошибка

Sheila Pontes

Привет,

В чем же ошибка?

Рейтинг:
10

Thomas Daniels

Для этого конкретного формата вам не нужно регулярное выражение. Достаточно просто разбить пространство на части:

string blabla = "4.2 Minutes";
string[] split = blabla.Split(' ');
string letters = split[1];
string numbers = split[0];