簡體   English   中英

如何使用正則表達式拆分字符串以返回值列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM