[英]How can I split a string using regex to return a list of values?
如何獲取字符串foo[]=1&foo[]=5&foo[]=2
1,5,2
該順序返回值1,5,2
的集合。 我正在尋找在C#中使用正則表達式的答案。 謝謝
在C#中,您可以使用捕獲組
private void RegexTest()
{
String input = "foo[]=1&foo[]=5&foo[]=2";
String pattern = @"foo\[\]=(\d+)";
Regex regex = new Regex(pattern);
foreach (Match match in regex.Matches(input))
{
Console.Out.WriteLine(match.Groups[1]);
}
}
我不懂C#,但是...
在Java中:
String[] nums = String.split(yourString, "&?foo[]");
String.split()
方法中的第二個參數是一個正則表達式,告訴該方法在哪里拆分String。
將Regex.Split()方法與適當的regex一起使用。 這將拆分與正則表達式匹配的字符串部分,並將結果作為string []返回。
假設您想要查詢字符串中的所有值而不檢查它們是否為數字,(並且不僅僅與foo []之類的名稱匹配),可以使用以下命令:“&?[^&=] + =”
string[] values = Regex.Split(“foo[]=1&foo[]=5&foo[]=2”, "&?[^&=]+=");
順便說一句,如果您正在使用正則表達式,則該網站http://gskinner.com/RegExr/非常棒(我只是一個粉絲)。
我將使用以下特定模式:
string re = @"foo\[\]=(?<value>\d+)";
所以像(未經測試):
Regex reValues = new Regex(re,RegexOptions.Compiled);
List<integer> values = new List<integer>();
foreach (Match m in reValues.Matches(...putInputStringHere...)
{
values.Add((int) m.Groups("value").Value);
}
假設您正在處理數字,則此模式應匹配:
/=(\d+)&?/
應該這樣做:
using System.Text.RegularExpressions;
Regex.Replace(s, !@"^[0-9]*$”, "");
其中s是您要提取數字的字符串。
只需確保像這樣逃脫“&”號即可:
/=(\d+)\&/
這是使用內置string.Split函數的替代解決方案:
string x = "foo[]=1&foo[]=5&foo[]=2";
string[] separator = new string[2] { "foo[]=", "&" };
string[] vals = x.Split(separator, StringSplitOptions.RemoveEmptyEntries);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.