Разделить строку / число на каждый N-й символ / число? - PullRequest
58 голосов
/ 09 ноября 2010

Мне нужно разбить число на четные части, например:
32427237 должно стать 324 272 37
103092501 должен стать 103 092 501

Я уверен, что мог бы просто перейти к следующим числам, но я уверен, что есть более эффективный способ, так как я не хочу пропустить символы в этих числах - сами числа могут быть любой длины, так что если число было 1234567890, я хотел бы, чтобы это было разделено на эти части 123 456 789 0

Я видел примеры на других языках, таких как Python и т. Д., Но я недостаточно хорошо их понимаю, чтобы преобразовать их в C # - циклически перебирая символы, а затем на третьем получая предыдущий, а затем этот индекс, чтобы получить раздел строка может сделать работу, но я открыт для предложений о том, как добиться этого лучше.

Ответы [ 13 ]

1 голос
/ 16 декабря 2015

Попробуйте это:

Regex.Split(num.toString(), "(?<=^(.{8})+)");
0 голосов
/ 18 сентября 2018

Для разделения строки и возврата списка строк с определенным номером символа на место, вот моя функция:

public List<string> SplitStringEveryNth(string input, int chunkSize)
    {
        var output = new List<string>();
        var flag = chunkSize;
        var tempString = string.Empty;
        var lenght = input.Length;
        for (var i = 0; i < lenght; i++)
        {
            if (Int32.Equals(flag, 0))
            {
                output.Add(tempString);
                tempString = string.Empty;
                flag = chunkSize;
            }
            else
            {
                tempString += input[i];
                flag--;
            }

            if ((input.Length - 1) == i && flag != 0)
            {
                tempString += input[i];
                output.Add(tempString);
            }
        }
        return output;
    }
0 голосов
/ 09 ноября 2010

Это может быть не по теме, так как я не знаю, почему вы хотите отформатировать числа таким образом, поэтому, пожалуйста, просто проигнорируйте этот пост, если он не актуален ...

То, как показано целое число, отличается в разных культурах. Это следует делать локально независимо, чтобы легче было локализовать изменения на более позднем этапе.

int.ToString принимает различные параметры, которые можно использовать для форматирования для разных культур. Параметр "N" предоставляет стандартный формат для группирования по культуре.

steve x string string также отличный ресурс.

...