Convert integer number to three digit - c#

I have an integer variable .if its 1-9 it only displays as "1" or "9", I'm looking to convert the variable to save as 3 digits, ie. "001", or "009", etc. any ideas?
I am using C#,ASP.Net

use
int X = 9;
string PaddedResult = X.ToString().PadLeft (3, '0'); // results in 009
see MSDN references here and here.

What about
var result = String.Format("{0:000}", X);
var result2 = X.ToString("000");

int i = 5;
string tVal=i.ToString("000");

From: https://learn.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings#DFormatString
The "D" (or decimal) format specifier converts a number to a string of decimal digits (0-9), prefixed by a minus sign if the number is negative.
The precision specifier indicates the minimum number of digits desired in the resulting string. If required, the number is padded with zeros to its left to produce the number of digits given by the precision specifier.
Like:
int value;
value = 12345;
Console.WriteLine(value.ToString("D"));
// Displays 12345
Console.WriteLine(value.ToString("D8"));
// Displays 00012345
value = -12345;
Console.WriteLine(value.ToString("D"));
// Displays -12345
Console.WriteLine(value.ToString("D8"));
// Displays -00012345

int i = 5;
string retVal = i.ToString().PadLeft(3, '0');

you can use this code also
int k = 5;
string name = $"name-{k++:D3}.ext";

Related

6 Floating digit without separator in c#

I am trying to get 11001 as 11001.000000 , I tried ToString("N6"), but it adds separator and output is as: 11,001.000000
How can get the value as a 6 floating digit without separator?
Use F6 instead of N6
int i = 11001;
string result = i.ToString("F6");
Reference: MSDN
To remove the comma separaytor use can use
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator
double d = 11001;
string result = d.ToString("F6").Replace(System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator, "");
int i = 11001;
string result = i.ToString("F6");
Here F in ToString() method is fixed point format specifier.
Number next to F can be used accordingly.
ex if you want 11001.00000, then use ToString("F5");

Format int to hex string

I have some int values that I want to convert to a string but in hex.
This hex value should be formatted always by 2 digits.
Example below:
int a = 10;
int b = 20;
//returns the value in hex
string c = a.toString("x"); // a
string d = b.toString("x"); // 14
What I want is that always that the hex value results in two digits. Shows like "0a", not only "a".
I'm using convert a int to a formatted string,
int e = 1;
string f = e.toString("D2"); // 01
Have a way to the two things together? To convert the int to a hex formatted string?
you can use this
int e = 1;
string f = e.toString("x2");
Have a way to the two things togheter?
Yes - you just use x2. You already have the hex bit with x and the "2 characters" part with D2 - you just need to combine them.
See the documentation for standard numeric format strings for more information.

Parse string and return only the information between bracket symbols. C# Winforms

I would like to parse a string to return only a value that is in between bracket symbols, such as [10.2%]. Then I would need to strip the "%" symbol and convert the decimal to a rounded up/down integer. So, [10.2%] would end up being 10. And, [11.8%] would end up being 12.
Hopefully I have provided sufficient information.
Math.Round(
double.Parse(
"[11.8%]".Split(new [] {"[", "]", "%"},
StringSplitOptions.RemoveEmptyEntries)[0]))
Why not use Regex?
In this example, I am assuming that your value inside the brackets always are a double with decimals.
string WithBrackets = "[11.8%]";
string AsDouble = Regex.Match(WithBrackets, "\d{1,9}\.\d{1,9}").value;
int Out = Math.Round(Convert.ToDouble(AsDouble.replace(".", ","));
var s = "[10.2%]";
var numberString = s.Split(new char[] {'[',']','%'},StringSplitOptions.RemoveEmptyEntries).First();
var number = Math.Round(Covnert.ToDouble(numberString));
If you can ensure that the content between the brackets is of the form <decimal>%, then this little function will return the value between the fist set of brackets. If there are more than one values you need to extract then you will need to modify it somewhat.
public decimal getProp(string str)
{
int obIndex = str.IndexOf("["); // get the index of the open bracket
int cbIndex = str.IndexOf("]"); // get the index of the close bracket
decimal d = decimal.Parse(str.Substring(obIndex + 1, cbIndex - obIndex - 2)); // this extracts the numerical part and converts it to a decimal (assumes a % before the ])
return Math.Round(d); // return the number rounded to the nearest integer
}
For example getProp("I like cookies [66.7%]") gives the Decimal number 67
Use regular expressions (Regex) to find the required words within one bracket.
This is the code you need:
Use an foreach loop to remove the % and convert to int.
List<int> myValues = new List<int>();
foreach(string s in Regex.Match(MYTEXT, #"\[(?<tag>[^\]]*)\]")){
s = s.TrimEnd('%');
myValues.Add(Math.Round(Convert.ToDouble(s)));
}

How to Prefix '0' (zero) to integer value

I have a situation where I need to prefix a zero to an integer.
Initially I have string which has 12 chars, first 7 are alphabets and 5 are numeric values.
The generated string some times have a zero at starting position of numeric values. for example ABCDEF*0*1234, and my scenario is to generate a range of strings from the generated string. Suppose I want to generate a range (assume 3 in number), so it would be ABCDEF01235, ABCDEF01236, ABCDEF01237.
When I try to convert a string which has a 0 (as shown above) to int, it returns only 1234.
Is there any way to do this, without truncating zero?
You can use PadLeft to expand a given string to a given total length:
int num = 1234;
Console.WriteLine(num.ToString().PadLeft(5, '0')); // "01234"
int num = 1234;
Console.WriteLine(num.ToString("D5")); // "01234"
No with int.
You have to use string to concatenate the parsed number and the 0
int num = 1234;
Console.WriteLine($"{num:d5}");
I think you can use string.Format
int num = 1234;
Console.WriteLine(string.Format("0{0}", num));

Double to string -- formatter missed?

I have to convert a double to string with the following rules:
If decimal point position is -1 (or another non-existing value meaning 'Auto'), fractional part of the number should be output with all significant digits (all zeroes at the end should be trimmed). If the double is integer, its fractional part shouldn't output at all. For instance, digits = -1: 1029.0 -> 1,029, 1029.123456789 -> 1,029.123456789.
If decimal point position is equal or greater than 0, fractional part of the number should be output with the given number of digits. For instance, digits = 2: 1029.0 -> 1,029.00, 1029.123456789 -> 1,029.12.
Conversion should be culture-dependant (point or comma as decimal point, comma or space as group divider etc).
I have a code for the task:
var _Culture = CultureInfo.CreateSpecificCulture("en-US");
object sourceValue = 1029.0;//.123456789;
int digits = -1; // 2;
var formatter = "G";
if (digits != -1)
{
_Culture.NumberFormat.NumberDecimalDigits = digits;
formatter = "N";
}
var sourceValueAsFloat = (double)sourceValue;
var s = sourceValueAsFloat.ToString(formatter, _Culture);
Is there another formatter (not "N" or "G"), I can use instead? Or, maybe, I can use "N"/"G" another way?
Regards,
See here and here for all the format string specifiers .net understands.
// preferably make allDigits a static field to avoid re-allocating on every call
string allDigits = "#,0." + new string('#', 350);
string output = sourceValue.ToString(
digits < 0 ? allDigits : "#,0." + new string('0', digits));
And if you need to handle different cultures explicitly:
string output = sourceValue.ToString(
digits < 0 ? allDigits : "#,0." + new string('0', digits),
culture);

Categories