2013-07-12 225 views
1

我正在使用C#.NET和Windows CE Compact Framework。我有一个代码,它应该将一个字符串分隔成两个文本框。如何将一个字符串分为两个字符串

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

使用Split函数 – 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

Th e 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),但我得到没有重载的方法删除也许是因为我使用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; 
相关问题