Здравствуйте, Ночной Смотрящий, Вы писали:
N>>сразу в голову приходит превратить в целое потом формат #.### и обратно в строку..
НС>Это будет с проходом.
я имел ввиду нечто подобное
Здравствуйте, nt2000, Вы писали:
N>можно без прохода?
Совсем без — нельзя. Кто-то будет делать проход. Либо int.Parse, либо самому.
N>сразу в голову приходит превратить в целое потом формат #.### и обратно в строку..
N>пока не удается форматировать, (странно вроде раньше получалось легко)
гугл в помощь.
N>потом мне это не нравится: строка может оказаться слишком длинной для преобразования в целое
Есть BigInteger
N>и еще сомневаюсь что удасться целое преобразить в строку с сохранением запятых.
В целом нет запятых.
Re: Вставить символы в строку вразброс одним махом.. можно ли?
Здравствуйте, nt2000, Вы писали:
N>у строки такой нюанс: она состоит из цифр.
N>нужно вставить запятые через каждые три знака начиная сзади(как разделители тысячных разрядов у буржуев)
Можно как-то так:
public static string FormatString(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
var buf = new StringBuilder(input.Length + (input.Length - 1) / 3);
var index = 0;
while (index < input.Length % 3)
{
buf.Append(input[index++]);
}
while (index < input.Length)
{
if (index > 0)
{
buf.Append(',');
}
buf.Append(input[index++]);
buf.Append(input[index++]);
buf.Append(input[index++]);
}
return buf.ToString();
}
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: Вставить символы в строку вразброс одним махом.. можно ли?
Здравствуйте, Kolesiki, Вы писали:
K>Ну можно ещё сплит(кусочками по три) потом джойн с запятыми.
split to что надо, но....
string a = "44444444";
Console.WriteLine( a );
Console.WriteLine( a .Length );
int b = int.Parse(a) ;
Console.WriteLine(b );
string s = string.Format( "{0:0,000}",б);
Console.WriteLine( s );
Console.WriteLine( s .Length );
//!!! вот тут начинаются чудеса
Console.WriteLine(s.Contains(" "));
Console.WriteLine(s.Replace(' ', ',') );
string[]c=s.Split(' ' );
string.Join(',',c) ;
Re: Вставить символы в строку вразброс одним махом.. можно ли?
Здравствуйте, nt2000, Вы писали:
N>у строки такой нюанс: она состоит из цифр.
N>нужно вставить запятые через каждые три знака начиная сзади(как разделители тысячных разрядов у буржуев)
С точки зрения скорости не самый лучший вариант, зато лаконично и функционально:
var number = "1234567890";
var len = number.Length;
var bld = new StringBuilder(len + len / 3);
number.ToCharArray().Select((ch, ix) => bld.Append(ix > 0 && (len - ix) % 3 == 0 ? new [] { ',', ch } : new [] { ch })).ToList();
Console.WriteLine(bld.ToString());
Re[2]: Вставить символы в строку вразброс одним махом.. можно ли?