我正在創建窗口窗體,它已經創建,我必須使用該代碼和現在進一步處理的想法是,該代碼在一個地方工作,但它不會在其他工作,它會給我一個錯誤消息長度不能小於零長度不能小於零
這是我的代碼:
aspx.cs代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
namespace AQCConsolidator1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnGetData_Click(object sender, EventArgs e)
{
List<String> list = new List<String>();
List<String> list1 = new List<String>();
string request = @"RP/DCA1S219C/DCA1S219C SL/SU 9APR13/2223Z 4YYTR7
45 FA PAX 257-7242858184/ETOS/USD736.23/08APR13/DCA1S211E/49881
134/S3-6/P1
46 FA PAX 257-7242858185/ETOS/USD736.23/08APR13/DCA1S211E/49881
134/S3-6/P2
030 AF/FA 257-7242215364/ETOS/USD778.23/07APR13/DCA1S219C/
49881134/OS 850 K 31MAY TIAVIE/OS 087 K 31MAY VIEJFK/OS
088 L 09JUN JFKVIE/OS 847 L 10JUN VIETIA/MBYETI/PETRAQ(
ADT)
030 AF/FA 257-7242215365/ETOS/USD778.23/07APR13/DCA1S219C/
49881134/OS 850 K 31MAY TIAVIE/OS 087 K 31MAY VIEJFK/OS
088 L 09JUN JFKVIE/OS 847 L 10JUN VIETIA/MBYETI/JORGJIE(
ADT)
030 RF-WS-NMC-US/WSTMTFTP CR-DCA1S219C 49881134 SU 9999WS/RO
-9CCF46CE TNGW33TMT 00000000 07APR1829Z
030/035 CF/FA 257-7242215364/ETOS/USD778.23/07APR13/DCA1S219C/
49881134/OS 850 K 31MAY TIAVIE/OS 088 L 09JUN JFKVIE/OS
087 K 31MAY VIEJFK/OS 847 L 10JUN VIETIA/MBYETI/PETRAQ(
ADT)
030/035 AF/FA 257-7242215364/ETOS/USD778.23/07APR13/DCA1S219C/
49881134/OS 850 K 31MAY TIAVIE/OS 087 K 31MAY VIEJFK/
MBYETI/PETRAQ(ADT)
string request1 = @"RP/DCA1S219C/DCA1S219C SL/SU 7FEB13/2215Z 8TXSAK
36 FA PAX 125-7239038457/ETBA/07FEB13/DCA1S211E/49881134
/S4-5/P3
37 FA PAX 125-7239038458/ETBA/07FEB13/DCA1S211E/49881134
/S4-5/P1
38 FA PAX 125-7239038459/ETBA/07FEB13/DCA1S211E/49881134 @
/S4-5/P2
39 FB PAX 0700449140 TTP/ET/RT/INVJ OK ETICKET/S4-5/P1-3
40 FE PAX BA ONLY/NONREF/NONEND SEE GGAIRBAGUSA -BG:BA/S4-5/P3
41 FE PAX BA ONLY/NONREF/NONEND SEE GGAIRBAGUSA -BG:BA
/S4-5/P1-2
42 FI PAX 0700449140 INV 0011436178/S4-5/P1-3
43 FI PAX 0700449140 INV 0011436178/S6/P1-3
44 FI PAX 0700449140 INV 0011436178/S7/P1-3
45 FM *M*0.00A
46 FP CHECK
47 FT *BT1195364
48 FV PAX BA/S4-5/P3
49 FV PAX BA/S4-5/P1-2
50 FY BULK/TBULK";
string request2 = @"RP/DCA1S219C/DCA1S219C SL/SU 9APR13/2223Z 4YYTR7
45 FA PAX 257-7242858184/ETOS/USD736.23/08APR13/DCA1S211E/49881
134/S3-6/P1
46 FA PAX 257-7242858185/ETOS/USD736.23/08APR13/DCA1S211E/49881
134/S3-6/P2
47 FB PAX 0800499541 TTP/ET/INVJ/RT OK ETICKET/S3-6/P1-2
48 FE *M*//REFTHRUAGT/NONEND
49 FI PAX 0800499541 INV 0011466820/S3-6/P1-2
50 FI PAX 0800499541 INV 0011466820/S7/P1-2
51 FI PAX 0800499541 INV 0011466820/S8/P1-2
52 FM *M*8
53 FP CHECK
54 FT *815ZU
55 FV PAX OS/S3-6/P1-2";
list.Add(request);
list.Add(request1);
list.Add(request2);
MyClass1 obj1 = new MyClass1();
DataTable datatable1 = obj1.GetNumber(list);
}
}
}
如果刪除請求從我aspx.cs文件,則該代碼的工作,但如果我包括它它給這個錯誤仍然等待回覆我添加檢查條件BU牛逼還是把它給我的錯誤
這是我的類代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Text.RegularExpressions;
namespace AQCConsolidator1
{
class MyClass1
{
string output;
string subs;
DataTable dt = new DataTable();
DataRow dr = null;
public DataTable GetNumber(List<string> request)
{
dt.Columns.Add("TickitNumber", typeof(string));
foreach (string data in request)
{
string item = data;
while (item.Trim() != "")
{
dr = dt.NewRow();
int r1 = item.IndexOf("\r",3);
subs = item.Substring(0, r1); ///Got error in this line
if (subs.Contains("ET"))
{
Regex regexs = new Regex(@"[0-9||-]{14}");
foreach (Match m in regexs.Matches(subs))
{
output = m.ToString();
dr["TickitNumber"] = output;
}
dt.Rows.Add(dr);
}
item = item.Substring(subs.Length);
r1 = item.IndexOf("\r\n", 0);
item = item.Substring(r1);
}
}
return dt;
}
}
}
*哪裏*是錯誤?你已經提交了很多代碼,只是對發生的事情進行了模糊的描述。 – 2013-05-01 15:44:26
你是否已經通過調試器來確保你的空字符串不止一個? – 2013-05-01 15:44:44
'item.IndexOf(「\ r」,3)''item'中可能沒有'「\ r」',所以這會返回'-1',然後你會試着'item.Substring(0 ,-1)'這不起作用。 – Corak 2013-05-01 15:45:02