C#中移除逗号的代码失效,输出仍含逗号求排查解决
问题分析与修复
你写的代码想要实现:接收数字字符串,移除其中的逗号和小数点,然后在字符串前补零直到长度达到13位。但输入"123,560.789"时,输出却是"000123,560789",逗号没被移除,不符合预期。
错误原因
问题出在两个独立的if判断逻辑上:
- 第一个
if判断字符串包含逗号时,会把原字符串prm去掉逗号后赋值给ret - 但第二个
if判断字符串包含小数点时,又直接拿**原字符串prm**去掉小数点后赋值给ret,这就覆盖了之前已经去掉逗号的结果,导致逗号又保留了下来
修复后的代码
可以直接对字符串链式调用Replace方法,依次移除逗号和小数点,每一步操作都基于上一步处理后的结果:
using System; public class HelloWorld { public static void Main(string[] args) { string xcom = "123,560.789"; Console.WriteLine(FormatNumber(xcom)); } static string FormatNumber(string text){ // 先移除逗号,再移除小数点 string ret = text.Replace(",", "").Replace(".", ""); // 前补零直到长度为13位 while(ret.Length < 13){ ret = "0" + ret; } return ret; } }
验证结果
输入"123,560.789"时,处理后会先得到"123560789",然后前补4个零,最终输出"0000123560789",符合预期。
内容的提问来源于stack exchange,提问作者user21078216
相关产品推荐
相关产品推荐

