2013-07-12 3 views
1

Я использую C# .NET и Windows Compact Compact Framework. У меня есть код, в котором в нем должна быть разделена одна строка на два текстовых поля.Как отделить одну строку от 2 строк

textbox1 = ID 
textbox2 = quantity 

string BarcodeValue= "+0000010901321 JN061704Z00"; 

textbox1.text = BarcodeValue.Remove(0, BarcodeValue.Length - BarcodeValue.IndexOf(' ') + 2); 
//Output: JN061704Z00 

textbox2.text = BarcodeValue.Remove(10, 0).TrimStart('+').TrimStart('0'); 
//Output: should be 1090 but I am getting a wrong output: 10901321 JN061704Z00 
//Please take note that 1090 can be any number, can be 999990 or 90 or 1 

Может ли кто-нибудь помочь мне в этом? : ((

СПАСИБО !!

+1

Использование функции разделения – Roar

+4

Что такое «неправильный вывод», который вы получаете; Кроме того, я сомневаюсь, что вы получаете JN061704X00, потому что на входе нет X –

+0

@MarcGravell, который должен быть Z вместо X, уже отредактируйте его. благодаря! – QKWS

ответ

3

использование Split()

string BarcodeValue= "+0000010901321 JN061704Z00"; 
string[] tmp = BarcodeValue.Split(' '); 
textbox1.text = tmp[1]; 
textbox2.text= tmp[0].SubString(0,tmp[0].Length-4).TrimStart('+').TrimStart('0'); 
+0

: 10901321, мне просто нужно 1090 – QKWS

+0

можете ли вы описать алгоритм получения количества? –

+0

Это всегда последние 4 цифры первой части строки, которые вам не нужны? –

5

Используйте Split метод:.

string BarcodeValue = "+0000010901321 JN061704Z00"; 
var splitted = BarcodeValue.Split(' '); //splits string by space  

textbox1.text = splitted[1]; 

textbox2.text = splitted[0].Remove(10).TrimStart('+').TrimStart('0'); 

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

+0

@sasjaq спасибо, отредактирован. – gzaxx

+0

вывод: 10901321 – QKWS

+0

Я отредактировал свой ответ, чтобы удалить что-либо после 10 символов, вы попробовали? – gzaxx

1

Remove(10,0) удаляет нулевые символы. Вы хотите, чтобы Remove(10) убрать все после позиции 10.

См. MSDN для двух версий.

Также можно использовать Substring(0,10) для получения первых 10 символов.

+0

Я попробовал Удалить (10), но я получаю Нет перегрузки для метода Удалить. – QKWS

+0

@ QKWS - это странно, что перегрузка была добавлена ​​в [версии 2.0] (http://msdn.microsoft.com/en-us/library/9ad138yc (v = vs.80) .aspx) –

+0

Я использую Compact Framework для Windows CE – QKWS

2
static void Main(string[] args) 
    { 
     string BarcodeValue = "+0000010901321 JN061704Z00"; 

     var text1 = BarcodeValue.Split(' ')[1]; 
     var text2 = BarcodeValue.Split(' ')[0].Remove(10).Trim('+'); 

     Console.WriteLine(text1); 
     Console.WriteLine(Int32.Parse(text2)); 
    } 

Результат:

JN061704Z00 
1090 
+0

Я попытался удалить (10), но я получаю Нет перегрузки для метода Remove, возможно, потому, что я использую Compact Framework для Windows CE – QKWS

1

немного лучше версии кода, размещенных выше.

  string BarcodeValue= "+0000010901321 JN061704Z00"; 
      if(BarcodeValue.Contains(' ')) 
      { 
       var splitted = BarcodeValue.Split(' '); 

       textbox1.text = splitted[1]; 

       textbox2.text = splitted[0].TrimStart('+').TrimStart('0'); 
      } 
+0

Выход: 10901321 – QKWS

0
string BarcodeValue = "+0000010901321 JN061704Z00"; 

var splittedString = BarcodeValue.Split(' '); 

TextBox1.Text = splittedString [0].Remove(10).TrimStart('+').TrimStart('0'); 

TextBox2.Text = splittedString [1]; 

Выходной -

TextBox1.Text = 1090 

TextBox2.Text = JN061704Z00 
0

Это работает только если длина barcodeValue всегда Уст.

string[] s1 = BarcodeValue.Split(' '); 
    textBox1.Text = s1[0]; 
    textBox2.Text = s1[1]; 

    string _s = s1[0].Remove(0, 6).Remove(3, 4); 
    textBox3.Text = _s; 
Смежные вопросы