我有一个下拉列表,其中包含两列的值...一列是一个数字,范围从 5 个字符长到 8 个字符长,然后是空格,然后是“|” 字符和另一个空格,后跟一组数字的描述。
一个例子:
12345678 | Description of Product
为了将下拉列表的项目拉到我的数据库中,我需要一个子字符串来仅拉出数字序列。
是否可以编写一个子字符串来提取多个字符长度?(有时可能是 6 个数字,有时是 5 个数字,有时是 8 个,这取决于用户从下拉列表中选择的内容。)
我有一个下拉列表,其中包含两列的值...一列是一个数字,范围从 5 个字符长到 8 个字符长,然后是空格,然后是“|” 字符和另一个空格,后跟一组数字的描述。
一个例子:
12345678 | Description of Product
为了将下拉列表的项目拉到我的数据库中,我需要一个子字符串来仅拉出数字序列。
是否可以编写一个子字符串来提取多个字符长度?(有时可能是 6 个数字,有时是 5 个数字,有时是 8 个,这取决于用户从下拉列表中选择的内容。)
为此使用正则表达式。
假设数字位于字符串的开头,您可以使用以下内容:
^[0-9]+
用法:
var theNumbers = RegEx.Match(myDropdownValue, "^[0-9]+").Value;
如果您知道第一部分是您需要的并且始终是数字,您也可以使用string.Split
来分隔各部分:|
var theNumbers = myDropdownValue.Split("| ".ToCharArray(),
StringSplitOptions.RemoveEmptyEntries)[0];
这些方法中的任何一种都会产生一个字符串。您可以使用int.Parse
结果以从中获取整数。
我会这样做
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);
您应该使用拆分功能,而不是使用子字符串。
var words = phrase.Split(new string[] {" | "},
StringSplitOptions.RemoveEmptyEntries);
var number = word[0];
尝试使用正则表达式提取任意长度的数字序列的第一个匹配项。正则表达式看起来像 "^\d+" - 以任意数量的十进制数字开头。