C# 字符串格式
我可以编写一个应用程序,将字符串(由数字组成)的长度从8-12个字符转换为8-12个字符(参见下面的示例)C# 字符串格式,c#,string,string-formatting,C#,String,String Formatting,我可以编写一个应用程序,将字符串(由数字组成)的长度从8-12个字符转换为8-12个字符(参见下面的示例) 1404336133 4174728823 0587035281 基本上,我想将上面的字符串暂时转换为特定格式(存储在配置文件中),如下所示 <add key="Consumer_Code_Format_For_Code_Length_Eight" value="#### ####"/> <add key="Consumer_Code_Format_For_Code_
- 1404336133
- 4174728823
- 0587035281
<add key="Consumer_Code_Format_For_Code_Length_Eight" value="#### ####"/>
<add key="Consumer_Code_Format_For_Code_Length_Nine" value="### ### ###"/>
<add key="Consumer_Code_Format_For_Code_Length_Ten" value="### #### ###"/>
<add key="Consumer_Code_Format_For_Code_Length_Eleven" value="#### ### ###"/>
<add key="Consumer_Code_Format_For_Code_Length_Twelve" value="#### #### ####"/>
但是,对于代码0587035281,它显示“58 7035 281”,因此删除了我需要的前导零
有没有办法阻止这种情况,我的代码是否有任何错误或可疑之处
期待您的回复
Double
值实际上存储为数字,因此在使用Double.Parse()时,前导零会自动删除
若要再次添加前导零,您可以执行类似的操作(未测试,从我的头顶开始书写)。记住原始长度,然后比较结果,并根据需要添加尽可能多的前导零
public static string FormatCode(string code)
{
int originalLength = code.Length;
switch (originalLength)
{
case 8:
string codeFormat = ...;
code = ...;
break;
case 9:
codeFormat = ...;
code = ...;
break;
// ...
while (code.Length < originalLength) {
code = "0" + code;
}
return code;
}
公共静态字符串格式代码(字符串代码)
{
int originalLength=代码长度;
开关(初始长度)
{
案例8:
字符串代码格式=。。。;
代码=。。。;
打破
案例9:
代码格式=。。。;
代码=。。。;
打破
// ...
while(代码长度<原始长度){
code=“0”+代码;
}
返回码;
}
公共静态字符串格式代码(字符串代码)
{
开关(code.Length.ToString())
{
案例“8”:
string codeFormat=ConfigurationManager.AppSettings[“消费者代码格式用于代码长度八”];
打破
案例“9”:
codeFormat=ConfigurationManager.AppSettings[“消费者代码格式用于代码长度”];
打破
案例“10”:
codeFormat=ConfigurationManager.AppSettings[“消费者代码格式用于代码长度”];
打破
案例“11”:
codeFormat=ConfigurationManager.AppSettings[“消费者代码格式用于代码长度”];
打破
案例“12”:
codeFormat=ConfigurationManager.AppSettings[“消费者代码格式用于代码长度”];
打破
违约:
codeFormat=ConfigurationManager.AppSettings[“消费者代码格式用于代码长度八”];
打破
}
char[]结果=新字符[codeformat.Length];
int=0;
对于(i=0;i
没有很好的内联解决方案,你必须自己处理。因为这不是你要处理的数字,可能你需要一些非数字文字,最好每N个字符插入一个空格。这是这样的:
int chunkSize = 3;
string a = "0123456789";
int len = a.Length;
StringBuilder sb = new StringBuilder(len + len / chunkSize);
int firstIdx = len % chunkSize;
sb.Append(a.Substring(0, firstIdx));
sb.Append(" ");
for (int i = firstIdx; i < len; i += chunkSize)
{
sb.Append(a.Substring(i, chunkSize));
sb.Append(" ");
}
a = sb.ToString();
int chunkSize=3;
字符串a=“0123456789”;
int len=a.长度;
StringBuilder sb=新StringBuilder(len+len/chunkSize);
int firstIdx=len%chunkSize;
sb.Append(a.Substring(0,firstIdx));
某人加上(“”);
for(int i=firstIdx;i
这是有道理的,那么Dennis,你建议如何格式化代码呢?老实说,我不确定这是否是最好的解决方案,我想我可能需要更改web.config存储的内容,从而更改我的FormatCode方法。这正是我想到的。如果我没有花时间研究最好的解决方案,我很抱歉帮不了什么忙。@oded我认为你使用0
而不是
是正确的
public static string FormatCode(string code)
{
switch (code.Length.ToString())
{
case "8":
string codeFormat = ConfigurationManager.AppSettings["Consumer_Code_Format_For_Code_Length_Eight"];
break;
case "9":
codeFormat = ConfigurationManager.AppSettings["Consumer_Code_Format_For_Code_Length_Nine"];
break;
case "10":
codeFormat = ConfigurationManager.AppSettings["Consumer_Code_Format_For_Code_Length_Ten"];
break;
case "11":
codeFormat = ConfigurationManager.AppSettings["Consumer_Code_Format_For_Code_Length_Eleven"];
break;
case "12":
codeFormat = ConfigurationManager.AppSettings["Consumer_Code_Format_For_Code_Length_Twelve"];
break;
default:
codeFormat = ConfigurationManager.AppSettings["Consumer_Code_Format_For_Code_Length_Eight"];
break;
}
char[] result = new char[codeformat.Length];
int used = 0;
for(i = 0; i < codeformat.Length; i++)
{
if (codeformat[i] == '#')
{
result[i] = code[used];
used++;
}
else
result[i] = codeformat[i];
}
// Finally return the newly formatted code
return new string(result);
}
int chunkSize = 3;
string a = "0123456789";
int len = a.Length;
StringBuilder sb = new StringBuilder(len + len / chunkSize);
int firstIdx = len % chunkSize;
sb.Append(a.Substring(0, firstIdx));
sb.Append(" ");
for (int i = firstIdx; i < len; i += chunkSize)
{
sb.Append(a.Substring(i, chunkSize));
sb.Append(" ");
}
a = sb.ToString();