0

我有一个下拉列表,其中包含两列的值...一列是一个数字,范围从 5 个字符长到 8 个字符长,然后是空格,然后是“|” 字符和另一个空格,后跟一组数字的描述。

一个例子:

12345678 | Description of Product 

为了将下拉列表的项目拉到我的数据库中,我需要一个子字符串来仅拉出数字序列。

是否可以编写一个子字符串来提取多个字符长度?(有时可能是 6 个数字,有时是 5 个数字,有时是 8 个,这取决于用户从下拉列表中选择的内容。)

4

4 回答 4

1

为此使用正则表达式。

假设数字位于字符串的开头,您可以使用以下内容:

^[0-9]+

用法:

var theNumbers = RegEx.Match(myDropdownValue, "^[0-9]+").Value;

如果您知道第一部分是您需要的并且始终是数字,您也可以使用string.Split来分隔各部分:|

var theNumbers = myDropdownValue.Split("| ".ToCharArray(), 
                                       StringSplitOptions.RemoveEmptyEntries)[0];

这些方法中的任何一种都会产生一个字符串。您可以使用int.Parse结果以从中获取整数。

于 2012-06-08T17:58:55.060 回答
1

我会这样做

 string str = "12345678 | Description of Product";
 int delimiter;
 delimiter = str.IndexOf("|") - 1;

 string ID =str.substring(0, delimiter);

 string desc = str.substring(delimiter + 1, str.length - 1);
于 2012-06-08T18:01:19.020 回答
0

您应该使用拆分功能,而不是使用子字符串。

var words = phrase.Split(new string[] {" | "},
                     StringSplitOptions.RemoveEmptyEntries);

var number = word[0];
于 2012-06-08T17:59:41.253 回答
0

尝试使用正则表达式提取任意长度的数字序列的第一个匹配项。正则表达式看起来像 "^\d+" - 以任意数量的十进制数字开头。

于 2012-06-08T17:59:50.860 回答