2015-07-08 2 views
0

У меня есть строка из 4 цифр:MVC/C# Поставьте запятую после каждого номера в строке

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

1,2,3,4

I've tried this:

codeToSend.ToString ("#, #");

но это выходы «1,234» (что я и ожидал).

Я подозревал, что следующее после каждой цифры поместит запятую, но безрезультатно.

codeToSend.ToString ("#, #, #, #");

I have also tried string.format, но снова я столкнулся с той же проблемой.

var formattedString = string.Format ("{0: 0,0}", 1234);

Каков наиболее эффективный способ сделать это?

Примечание: Строка цифр всегда будет содержать 4 цифры и только цифры. Я не хочу использовать Insert, так как это было бы не очень изящным ИМО, и я знаю, что этот вопрос задавался ранее аналогичным образом, но он всегда немного отличается по-разному (например, форматирование до тысяч, а не каждая цифра или просто не изящно!).

ответ

5

Как насчет использования string.Join?

int i = 1234; 
string.Join(",", i.ToString().ToCharArray()); // 1,2,3,4 

Если 1234 является string, просто использовать;

string s = "1234"; 
string.Join(",", s.ToCharArray()); // 1,2,3,4 

или

string s = "1234"; 
string.Join(",", s.ToList()); // 1,2,3,4 
0

Это один может быть более эффективным. (Но вряд ли элегантный)

var target = "1234"; 
var result = Regex.Replace(target , @"(\d)(?=.)", "$1,"); 

Принимая фиксированную длину строки в счете, тот же результат может быть acomplished без опережающего просмотра (проще для чтения, и с большей эффективностью)

var target = "1234"; 
var result = Regex.Replace(target, @"(\d)(\d)(\d)(\d)", "$1,$2,$3,$4"); 

Кроме того, если вы обрабатываете многие такие значения, вы должны скомпилировать регулярное выражение перед использованием.

var target = "1234"; 
var digitExceptLastRegex = new Regex(@"(\d)(?=.)", RegexOptions.Compiled); 
var result = regex.Replace(target, "$1,"); 

Но я не оценил фактическую производительность.

Смежные вопросы