0

正在从数据库中获取数据并存储在 dataset.dataset 中包含电话号码列表。我想找出每个电话号码的长度。如果长度为 10,则表示将其添加到一个数据表中。或长度大于 10 意味着从电话号码的右侧获取 10 个字符并将其存储在同一个数据表中。这是我的代码。当我调试代码时,我只得到 8000 行。但最初数据集包含 40,700行值。
数据表达到 8000 行后出现错误

my code
-------
  ada.Fill(ds, "reports.renewal_contact_t ")

                ds.Tables(0).DefaultView.RowFilter = " PHONE NOT like'0'"
                dt = ds.Tables(0)
                For Each q In dt.Rows
                    chkphone = q("PHONE").ToString
                    chkdphone = Regex.Replace(chkphone, "[^\d]", "")

                    'MessageBox.Show(chkdphone)


                    If (chkdphone.Length = 10) Then
                        Dim anyRow As DataRow = dt2.NewRow
                        anyRow(0) = chkphone.ToString
                        dt2.Rows.Add(anyRow)

                    ElseIf (chkdphone.Length >= 10) Then
                        rsltstring = chkdphone.Substring(chkdphone.Length, -10)

                        Dim anyrow1 As DataRow = dt2.NewRow
                        anyrow1(0) = rsltstring.ToString
                        dt2.Rows.Add(anyrow1)
                    Else


                    End If
                Next

                new_ds.Tables.Add(dt2)
                ComboBox1.DataSource = new_ds.Tables(0)
                ComboBox1.DisplayMember = "PHONE" 



 Error
 -----
 length cant be less than zero parameter name length
4

1 回答 1

1

您不能在Substring方法中使用负长度。从长度中减去 10 以获得所需字符串的起点:

rsltstring = chkdphone.Substring(chkdphone.Length - 10, 10)

由于您想要从该点开始的其余字符串,因此实际上不需要第二个参数:

rsltstring = chkdphone.Substring(chkdphone.Length - 10)
于 2012-09-14T05:35:41.320 回答