我正在寻找一种方法将一个数字转换为两个带有前导零和返回的字符串
本文关键字:两个 返回 字符串 数字 寻找 一种 方法 转换 一个 | 更新日期: 2023-09-27 18:33:13
我需要将一个字符串转换为另一个字符串(始终 4 个字符),如下所示:
1.2 > 0102
99.1 > 9901
1 > 0100
1.44 > 0144
然后是其他一些函数,从一个字符串(总是 4 个字符)转换回另一个字符串,如下所示:
0102 > 1.2
9901 > 99.1
0100 > 1
0144 > 1.44
有人可以通过提供一些关于如何在 C# 中执行此操作的建议来提供帮助吗?
更新:
只是为了让它更清楚一点。实际上有两个零填充的两位数。小数点之前和小数点之后的那个。所以 90.09 需要转换为"90" + "09" = "9009"。我希望这是有道理的
我会使用 LINQ 在一行中解决它:
string oldString = "3.5";
string newString = string.Join("", from s in oldString.Split('.') select s.PadLeft(2, '0')).PadRight(4, '0');
还原更容易:
string oldString = "0305";
string newString = oldString.Substring(0,2).TrimStart('0') + "." + oldString.Substring(2,2).TrimStart('0');
你可以从这里开始:
public void separate(string yourString){
//s= yourString;
string s = "10.2";
string part1;
string part2;
//
// Split string on dot.
// ... This will separate into 2 parts if exist .
//
string[] words = s.Split('.');
if(words[0].Length == 2){
part1 = words[0];
}else{
if (words[0].Length == 1){
part1 = "0" + words[0];
}else{ part1 = "00";}
}
if(words[1].Length == 2){
part2 = words[1];
}else{
if (words[1].Length == 1){
part1 = "0" + words[0];
}else{ part1 = "00";}
}
}
public string rebuild(string part1 , string part2)
{
string final = part1.Replace("0", "") +"."+ part2.Replace("0", "");
return final;
}
希望对你有帮助
string x = "99.1";
int real, deci,indpoint;
indpoint=x.IndexOf('.');
real = Convert.ToInt32(x.Substring(0, indpoint));
deci = Convert.ToInt32(x.Substring(indpoint+1));
string result="";
if (real < 10)
{
result += "0";
}
result += real;
if (deci % 10 == 0)
{
deci = (int)(deci * 0.1);
}
if(deci < 10)
{
result += "0";
}
result += deci;
float another = Convert.ToInt32(result.Substring(0, 2));
if (result[2] == '0')
{
another += (float)(Convert.ToInt32(result.Substring(2, 2)) * 0.1);
}
else
{
another += (float)(Convert.ToInt32(result.Substring(2, 2)) * 0.01);
}
string result2 = Convert.ToString(another);