2016-09-24 3 views
0

Мой передний конец приложение отправляет строки, которые выглядят следующим образом:Как разбить строку типа «12-15» на два числа?

"12-15" 

в C# приложения фоновым.

Может кто-нибудь дать мне несколько указателей относительно того, как я мог бы извлечь два числа в две переменные. Обратите внимание, что формат всегда совпадает с двумя цифрами и дефисом между ними.

ответ

2

Разделить строку на часть:

string s = "12-15"; 
string[] num = s.Split('-'); 
int part1 = Convert.ToInt32(num[0]); 
int part2 = Convert.ToInt32(num[1]); 
1

Мы вызываем Split на экземпляр строки. Эта программа разбивает на один символ

string s ="12-15"; 
string[] words = s.Split('-'); 
foreach (string word in words) 
{ 
    int convertedvalue = Convert.ToInt32(word); 
    Console.WriteLine(word); 
} 

string[] ss= s.Split('-'); 
int x = Convert.ToInt32(ss[0]); 
int y = Convert.ToInt32(ss[1]); 

more info

+0

Как я могу сделать строки как Интс? – Alan2

+0

после того, как вы разделите, вы получите эти значения внутри цикла, тогда вы можете преобразовать в int с помощью помощников преобразования dot net. –

2
string stringToSplit = "12-15"; 
string[] splitStringArray; 
splitStringArray = stringToSplit.Split('-'); 

splitStringArray [0] будет 12

splitStringArray [1] будет 15

+0

Мне нужно, чтобы числа 12 и 15 были int. Могу ли я просто наложить их на int или я должен использовать что-то еще? – Alan2

+0

int.TryParse (string, out intVariable) – JohnG

2
int[] numbers = "12-15".Split('-') 
     .Select(x => { 
      int n; 
      int.TryParse(x, out n); 
      return n; 
     }) 
     .ToArray(); 
1

Здесь правильная версия без неправильного кода

string textReceived = "12-15"; 

string[] numbers = textReceived.Split('-'); 
List<int> numberCollection = new List<int>(); 
foreach (var item in numbers) 
{ 
    numberCollection.Add(Convert.ToInt32(item)); 
} 
+0

не будет разделять строки возврата? – Alan2

+0

Посмотрите на пересмотренный код, который даст хороший список объектов для работы. –

+0

Код, который вы написали в первых трех примерах, даже не компилируется ... Тип возврата String.Split - это строка [], а не int []. – jeroenh

1

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

string myString = "12-15-18-20-25-60"; 
string[] splittedStrings = myString.Split('-'); 
foreach (var splittedString in splittedStrings) 
{ 
    Console.WriteLine(splittedString + "\n"); 
} 
Console.ReadLine(); 
0
String numberString = "12-15" ; 
string[] arr = numberString.Split("-"); 

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

int firstNumber = Convert.ToInt32(arr[0]); 

Полезного ответ, связанного с разбором:

https://stackoverflow.com/a/199484/5395773

0
string str = null; 
string[] strArr = null; 
int count = 0; 
str = "12-15"; 
char[] splitchar = { '-' }; 

strArr = str.Split(splitchar); 
for (count = 0; count <= strArr.Length - 1; count++) 
{ 
    MessageBox.Show(strArr[count]); 
} 
0

Вы можете преобразовать эту строку в явном виде до целого массива, используя Array.ConvertAll метод и получить доступ к номерам, используя их индекс, вы можете запустить ниже примера here.

using System; 

namespace Rextester 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var number = "12-15"; 
      var numbers = Array.ConvertAll(number.Split('-'), int.Parse); 
      Console.WriteLine(numbers[0]); 
      Console.WriteLine(numbers[1]); 
     } 
    } 
} 

Или вы можете явно преобразовать цифровую строку, используя int.Parse метод, то ключевое слово INT является именем псевдонима для System.Int32 и она по предпочитали полное имя типа системы System.Int32, вы можете запустить пример ниже here.

using System; 

namespace Rextester 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      var number = "12-15"; 
      var numbers = number.Split('-'); 
      var one = int.Parse(numbers[0]); 
      var two = int.Parse(numbers[1]); 
      Console.WriteLine(one); 
      Console.WriteLine(two); 
     } 
    } 
} 

Дополнительных чтения: Пожалуйста, проверьте int.Parse vs. Convert.Int32 vs. int.TryParse для большего понимания на разбор входа в целом

Смежные вопросы