【发布时间】:2014-08-14 01:13:08
【问题描述】:
我有这种方法来比较序列号,然后将其加一,在这样的字符串上使用.Split('-') 方法:CP1-P-CP2-001-A
if (CView.dgvCreate.Rows.Count != 0)
{
string tempCbl = cblNumber.TrimEnd('-');
string newCblNum = null;
foreach (DataGridViewRow row in CView.dgvCreate.Rows)
{
DataGridViewCell cell = row.Cells[0];
string[] substring = cell.Value.ToString().Split('-');
for (int i = 0; i < substring.Count() - 1; i++)
{
newCblNum += substring[i] + "-";
}
if (newCblNum.TrimEnd('-') == tempCbl)
{
int i = Convert.ToInt32(substring[substring.Count() - 1]);
cblNumber = newCblNum + (i + 1).ToString("D3");
CView.txtCableNumber.Text = cblNumber;
}
else { GenerateCableNumberDb(CView); }
}
if (CView.chkParallel.Checked == true)
{
ParallelCableNumber(CView);
}
else { dataList.Add(cblNumber); }
}
else { GenerateCableNumberDb(CView); }
但是,分隔符 (-) 可能不存在,导致字符串如下所示:CP1PCP2001A。
另外,我应该注意字符串的前 3 部分是可变长度的,只有最后 2 部分(Sequence - 001 和 Parallel - A)是固定长度,但是 A 在end 也可能不存在。例如。 MOT1PCP2001是另一种可能
我知道Regex 可用于定位字符串中的位置,但我不确定如何在此字符串上实现它(或者我什至可以吗?)
编辑:我还应该注意,我有一个布尔值来告诉我是否有分隔符,所以如果separator == true
【问题讨论】:
-
序号是多少?
-
@hwnd
001。这将始终采用'D3'格式。A是重复号码指示。 -
您在拆分后比较
001序列?还是拆分并仅增加 1? -
此方法切断
newCblNum(CP1-P-CP2) 的末尾,并查找任何其他现有的相同数字的字符串。然后它返回最大的数字(例如CP1-P-CP2-003)并将结束数字(003)加一,然后将其附加到newCblNum