Рейтинг:
1
IamWsk
Попробовать это.
txt.Text=String.Format("{0:C}", test*(-1)).Replace(",", " ");
Он также добавит знак валюты, а затем заменит знак валюты, как показано ниже, если вы не хотите
txt.Text=String.Format("{0:C}", test*(-1)).Replace(",", " ").Replace("$", "");
[no name]
Это не то, о чем спрашивал ОП.
IamWsk
Я забыл кое-что добавить, смотрите мое решение сейчас.Я Добавил".(",", " ")"
[no name]
Вы имеете в виду просто использовать замену, как уже было сказано в решении 2? Чем отличается ваше решение?
IamWsk
Мое решение сильно отличается от решения 2. Вы можете видеть, что решение 2 имеет 9 строк кода, а мое-только 1. С моим решением, надеюсь, у него не возникнет никаких проблем.
[no name]
Извините, Решение 1. Это одно и то же.
IamWsk
Некоторые вещи одинаковы, но мой код похож на "Ready for F5".
[no name]
Я... если вы имеете в виду то же самое, то вы правы. Эти 10 бесполезных интернет-точек действительно ценны для некоторых людей.
IamWsk
Я просто сравниваю свой код с предыдущими. Может быть, есть лучшие решения.
Рейтинг:
0
Foothill
Если вам подают число в виде строки с разделителем тысяч уже там, это функциональное, но грязное решение.
char[] numberText = value.ToCharArray();
for (int i = 0; i < numberText.Length; ++i)
{
if (numberText[i].Equals(','))
{
numberText[i] = ' ';
}
}
return new String(numberText);
TatsuSheva
тысяча разделителей еще не существует, и я также использую текстовое поле
Foothill
Вы могли бы просто работать с символами, добавляя пробелы по ходу дела. Есть много способов сделать это.
char[] numberText = массив.Реверс (значение.ToCharArray ()); / / переверните символы так, чтобы они начинались с ЛСД
StringBuilder sBuilder = new StringBuilder (); / / используйте класс StringBuilder для построения числовой строки по одной цифре за раз
for (int i = 0; i < numberText. Length; ++i)
{
sBuilder.Append (numberText[i]); / / добавить цифру
если (i % 3 = 0)
{
sBuilder.Append (' ' ); / / если это тысячная цифра, добавьте свой пробел
}
}
// результат обратный, так что переверните и вернитесь
возвращает новую строку (Array.Реверс (sBuilder.Метод toString().ToCharArray()));
TatsuSheva
Я нашел кое-что интересное, но у меня есть проблема, когда я помещаю некоторые цифры в текстовое поле, курсор всегда перемещается влево ...
Вот код:
doubletext=двойной.Синтаксический анализ(файл*. txt Текст);
CultureInfoculture=CultureInfo.CreateSpecificCulture ("fr-FR");
тхт.Текст=текст.ToString("N0", культура);
У вас есть какие-нибудь идеи ?
Foothill
Попробуйте установить свойство righttoleft текстового поля в файл txt.Значение Righttoleft = Справа Налево.Да
Foothill
Ладно, я только что вытащил его из интернета. Я подтвердил, что это работает в одном из моих приложений WPF.
txt. FlowDirection = FlowDirection.Справа налево;
TatsuSheva
Мой-Winform :/
Foothill
Тогда прочтите это. Он должен рассказать вам все, что вам нужно знать.
https://msdn.microsoft.com/en-us/library/system.windows.forms.control.righttoleft(v=против 110). aspx
Рейтинг:
0
TatsuSheva
NumberFormatInfo nfi = (NumberFormatInfo)
CultureInfo.Языка и региона существует.NumberFormat.Клон();
НФИ.NumberGroupSeparator = " ";
двойной текст = двойной.Синтаксический анализ(файл*. txt Текст);
тхт.Текст= текст.ToString("n", nfi);
Я положил это, но у меня нет того, что мне нужно...
Когда я пишу 2500 у меня есть 02 500 но я хочу 2 500
Ralf Meier
Я не могу этого подтвердить.
Когда я использую тот же код, он строит "2 500.00 "из исходной строки"2500".
Должно быть, у тебя что-то изменилось ...
David_Wimbley
Для меня также следующий код работает так, как ожидалось
var number = "2500";
NumberFormatInfo nfi = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberGroupSeparator = " ";
double text = double.Parse(number);
var finalFormatNumber = text.ToString("n", nfi);
Console.WriteLine(finalFormatNumber);
И выходы 2 500.00.
Как уже упоминал Ральф, в вашем приложении должно быть что-то еще.
TatsuSheva
Он находится в текстовом поле когда я пишу 2500 он становится 02 500
Ralf Meier
А какой результат вы получите, если будете использовать точно такой же код, как показал Дэвид Уимбли ?
Я тоже попробовал это сделать с текстовым полем, и он получил тот же результат (2 500.00).
Поэтому мы должны посмотреть, в чем разница ...