Разделить строку из базы данных в mvc - PullRequest
0 голосов
/ 06 марта 2020

У меня есть такой класс:

public class User
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Module { get; set; }
}

Для Module Я хочу установить разбиение при достижении определенной длины, например, как

: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);

Ответы [ 3 ]

0 голосов
/ 06 марта 2020

Я думаю, что вы хотите разделить свои 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;
    }
0 голосов
/ 06 марта 2020

Что-то в этом духе будет работать

 string modulesJoined =":Maths/English/Physics/Chemistry,Maths/English/Physics/Chemistry";
 string [] res = modulesJoined.Split(',');
 string module = string.Join("\n", res);
 module = module.TrimStart(':');
0 голосов
/ 06 марта 2020

Может быть, эта работа с использованием Regex вместо string.split попробуйте это

  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"
  }
...