具有多个参数的子字符串

时间:2012-06-08 17:55:52

标签: asp.net drop-down-menu substring

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

一个例子:

12345678 | Description of Product 

为了将下拉列表中的项目拉入我的数据库,我需要利用子字符串来仅输出数字序列。

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

4 个答案:

答案 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 +” - 以任意数量的十进制数字开头。