从字符串中获取值

时间:2011-03-17 00:55:36

标签: c# string

在我的变量中:

string selectedObjects;

我有一个很长的值,如:

"123;132;213;231;"

我希望得到4倍的值:"123;" , "132;" , "213;" and "231;".

我试着用foreach作为:

public ActionResult ShowHistory(string selectedObjects)
    {
        foreach (string item in selectedObjects)
        {
            item = selectedObjects.Split(';');
        }

但它不起作用。我怎么能这样做?

7 个答案:

答案 0 :(得分:1)

流量不正确。 Split会返回一个数组,然后您应该使用foreach进行迭代,如果这是您的选择。所以:

foreach (string item in selectedObjects.Split(';'))
{
    // do whatever you want with the items
}

答案 1 :(得分:1)

您可以使用正则表达式:

foreach (Match m in Regex.Matches("123;132;213;231;", @"\d+;"))
    string value = m.Value; //Do something worthwhile with the value.

所有其他答案都是错误的或矫枉过正 - 除非我遗漏了什么。

答案 2 :(得分:0)

public ActionResult ShowHistory(string selectedObjects)
{
    foreach (string tempItem in selectedObjects.Split(new []{';'}, StringSplitOptions.RemoveEmptyEntries))
    {
        string item = tempItem + ";"; // Add back on the ; character
    }
    // .. do something

RemoveEmptyEntries是必需的,否则,你会在结尾处得到一个空字符串(因为你的输入字符串以“;”结尾)。此外,string.Split不保留分隔符char,因此如果需要,您需要将其添加回来(因此tempItem)。

答案 3 :(得分:0)

分裂后需要再次附加分号。

public ActionResult ShowHistory(string selectedObjects)
{
    var items = selectedObjects.Split(';')
                               .Where(i => !string.IsNullOrEmpty(i))
                               .Select(i => i + ";");
    ...
}

或(如果您可以保证确切的格式)

public ActionResult ShowHistory(string selectedObjects)
{
    var items = selectedObjects.TrimEnd(';')
                               .Split(';')
                               .Select(i => i + ";");
    ...
}

答案 4 :(得分:0)

Split返回string的数组。

string selectedObjects = ...;

foreach (string item in selectedObjects.Split(';'))
{
   // do work
}

答案 5 :(得分:0)

foreach(string item in selectedObjects.Split(new [] {';'}, 
                                             StringSplitOptions.RemoveEmptyEntries)
                                      .Select( x=> x+";"))
{
   //process item
}

答案 6 :(得分:0)

Split方法返回字符串数组,尝试类似这样的

string selectedObjects = "123;132;213;231;";
string[] s = selectedObjects.Split(';');

foreach (string item in s )
{
    Console.Writeline(item.ToString());
}