2015-02-25 3 views
-2

Я пытаюсь разделить строку, содержащую десятичное число, и текстовые символы для Ex:Разделить десятичное число и текст в C#

"30.88H" в массив, содержащий 30.88 и H.

Я использовал следующее регулярное выражение:

string[] a = 
    Regex.Matches("30.88H", "([A-Z]+)|([0-9]+)").Cast<Match>().Select(m => m.Value).ToArray(); 

... Но это дает мне "30", "88" и "H", а не "30.88" и "Н". Может ли кто-нибудь предложить исправить?

+2

'.' не в' [0-9] '. Попробуйте добавить его? – Ryan

ответ

0

Я думаю, что только текущая проблема заключается в том, что . не находится в [0-9], но я вижу, что это хрупкое решение в зависимости от входных строк. Можете ли вы описать желаемое поведение немного больше? Вы когда-нибудь получите H3.88? H3.88H? Если да, то чего вы ожидаете от этого?

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

+0

Спасибо, что работает, когда я добавляю [0-9]. – Anju

+0

@Tim - Лучше не задавать вопросов внутри ответа. Это лучше всего поставить в качестве комментариев по этому вопросу. – Enigmativity

+0

Не знаете, почему. Я могу точно ответить на вопрос и помочь ему 0, потому что он не рассматривает все случаи, или я могу ответить на его вопрос, убедившись, что я задаю пробные вопросы, если я могу помочь ему направлять его на лучшее решение. Похоже, помочь самому, что я могу, это лучший способ. – Tim

0

Возможно, вы захотите использовать метод split в RegEx.


Чтобы получить строку чисел, разделить с этим выражением

[A-Z]+ 

Чтобы получить строку символов, попробуйте это выражение

[0-9]+\.[0-9]+ 

Вы должны использовать метод разделения в следующем формате:

string expr1 = Regex.Split("30.88H", @"[0-9]+\.[0-9]+"); \\Returns H 
string expr2 = Regex.Split("30.88H", @"[A-Z]+"); \\Returns 30.88 
Смежные вопросы