2012-06-08 32 views
0

我有一个下拉列表,其中有两列的值...一列是一个数字,范围从5个字符长到8个字符长,然后是空格,然后是'|'字符和另一个空格,然后是一组数字的说明。具有多个参数的子串

一个例子:

12345678 | Description of Product 

为了拉为下拉列表中的项目到我的数据库,我需要一个利用一子拉出只有数字的序列。

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

回答

1

对此使用正则表达式。

假设数目为字符串的开始,你可以使用以下命令:

^[0-9]+ 

用法:

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

你也可以使用string.Split度日|如果分开的部分你知道第一部分是你所需要的并且总是数字的:

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

以上任何一种方法都会导致字符串。您可以在结果上使用int.Parse以从中获取整数。

+0

我怎么会扎到这一点我的子?它看起来像这样:value.substring()它会是value.substring^[0-9] + ?? – developthestars

+0

@developthestars - 你没有。我建议你使用正则表达式而不是子字符串。 – Oded

+0

O我看到了.NET的新特性,但我还不完全熟悉正则表达式。谢谢@ – developthestars

0

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

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

var number = word[0]; 
+0

什么是分割功能? – developthestars

+0

查看我的更新回答 –

+0

查看详情:http://msdn.microsoft.com/en-us/library/tabh47cf.aspx –

0

尝试使用正则表达式来拉出任意长度的数字序列的第一个匹配。正则表达式看起来像“^ \ d +” - 以任意数量的小数位开始。

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);