Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在mvc中从数据库中拆分字符串_C#_Split - Fatal编程技术网

C# 在mvc中从数据库中拆分字符串

C# 在mvc中从数据库中拆分字符串,c#,split,C#,Split,我有一门课是这样的: public class User { public int ID { get; set; } public string Name { get; set; } public string Module { get; set; } } 对于模块我想在达到一定长度时设置拆分,例如 :Maths/English/Physics/Chemistry,Maths/English/Physics/Chemistry 我想得到这些结果: Maths/Engl

我有一门课是这样的:

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Module { get; set; }
}
对于
模块
我想在达到一定长度时设置拆分,例如

:Maths/English/Physics/Chemistry,Maths/English/Physics/Chemistry
我想得到这些结果:

Maths/English/Physics/Chemistry
Maths/English/Physics/Chemistry
我尝试过这种方法,但不起作用:

string input = Module;
string[] result = input.Split(new string[] { " , " }, StringSplitOptions.None);

这可能是使用正则表达式而不是字符串完成的。请尝试此操作

  string value = @":Maths/English/Physics/Chemistry/Maths/English/Physics/Chemistry";

  // Get a collection of matches.
  MatchCollection matches = Regex.Matches(value, @"Maths/English/Physics/Chemistry");

  // Use foreach-loop.
  foreach (Match match in matches)
  {
      // DO you jobs for each "Maths/English/Physics/Chemistry"
  }

我想你应该把你的8个部分分成几个项目,你可以定义每个项目的长度。下面是一个简单的代码版本

    public static void Main(string[] args)
    {
        var outputs = SplitIntoParts("Maths/English/Physics/Chemistry/Maths/English/Physics/Chemistry", 4);
        foreach(var output in outputs)
        {
            Console.WriteLine(output);
        }
    }

    private static List<string> SplitIntoParts(string input, int itemLength)
    {
        var result = new List<string>();
        var splittedValues = input.Split('/');
        for (var i = 0; i < splittedValues.Length; i++)
        {
            var item = string.Empty;
            if (i % itemLength > 0)
            {
                item = result[result.Count - 1];
            }
            item += splittedValues[i];
            if (i % itemLength < itemLength - 1)
            {
                item += "/";
            }
            if (i % itemLength == 0)
            {
                result.Add(item);
            }
            else
            {
                result[result.Count - 1] = item;
            }
        }
        return result;
    }
publicstaticvoidmain(字符串[]args)
{
var输出=分为几个部分(“数学/英语/物理/化学/数学/英语/物理/化学”,4);
foreach(输出中的var输出)
{
控制台写入线(输出);
}
}
私有静态列表拆分为部分(字符串输入,int itemLength)
{
var result=新列表();
var splittedValues=input.Split('/');
对于(var i=0;i0)
{
项目=结果[result.Count-1];
}
项目+=分割值[i];
如果(i%itemLength
按照这一思路做一些事情是可行的

 string modulesJoined =":Maths/English/Physics/Chemistry,Maths/English/Physics/Chemistry";
 string [] res = modulesJoined.Split(',');
 string module = string.Join("\n", res);
 module = module.TrimStart(':');

请你澄清一下:1)你说它不起作用是什么意思?2) 您需要将结果字符串放在哪里?3) 是否只拆分包含相同子字符串的字符串(如在您的示例中,相同子字符串重复两次)?由于它仍然保持为同一行,任何达到一定长度的子字符串都将拆分为第二行,因此它仍然是一个
字符串,但带有换行符?或者您想要一个
字符串[]模块
?这真的不清楚第二行的意思是什么?你们说的是在UI端显示模块数据吗?是的,用新行。我会设法弄清楚,说得更清楚,谢谢