在我的变量中:
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(';');
}
但它不起作用。我怎么能这样做?
答案 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());
}