2016-09-28 5 views
-2

Я хочу получить целочисленное значение в строке. Любые приговоры?
Возьмите это в качестве примера.Как получить число в строке?

768 - Hello World

Согласно предыдущей строке я хочу, чтобы получить 768 переменные. Как это сделать?

+3

Итак, вы хотите взять '768' из' 768 - Hello World', это простой вопрос, вы пробовали что-нибудь, даже быстрый поиск? –

+1

Будет ли целое всегда быть в начале? Что делать, если есть два целых числа Как насчет '5.5 - Hello World'? Будет ли всегда следовать номер за' - '? Как вы выбираете извлечение числовой части строки, будет очень сильно зависеть от того, какие данные вам нужно обрабатывать. Вы * можете * хотеть используйте регулярные выражения n, или это может быть так же просто, как найти подстроку перед первым пространством. –

+1

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

ответ

4
Int32.Parse(Regex.Match(some_string, @"\d+").Value); 

some_string представляет собой переменную, которая представляет собой тип данных строки. Регулярное выражение вернет первое число, с которого начинается слева. В вашем примере это 768. Если some_string содержит «привет 768" , он все равно будет возвращать 768.

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

public string GetFirstNumber(string some_string) { 

    if (string.IsNullOrEmpty(some_string)) { 
     return string.Empty; // You could return null to indicate no data 
    } 

    StringBuilder sb = new StringBuilder(); 
    bool found = false; 

    foreach(char c in some_string){ 
     if(Char.IsDigit(c)){ 
      sb.Append(c); 
      found = true; 
     } else if(found){ 
      // If we have already found a digit, 
      // and current character is not a digit, stop looping 
      break;     
     } 
    } 

    return sb.ToString(); 
} 
1

Разделить по пространству и взять первый элемент. Разделите его как целое.

string str = "768 - Hello World"; 
int i = Int32.Parse(str.Split(' ').First()); 
1
public int GetLeadingIntegerFromString(string myString) 
    { 
     if (string.IsNullOrWhiteSpace(myString)) 
      return; 

     var parts = myString.Split('-'); 
     if (parts.Length < 1) 
      return; 

     var number = int.Parse(parts[0].Trim()); 

     return number; 
    }  
Смежные вопросы