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