asp.net如何把有千位数为字符串
发布网友
发布时间:2024-10-14 08:12
我来回答
共5个回答
热心网友
时间:2024-11-30 09:03
问题在于你给定的字符串“456,366.37, 456,366.36”中,千分位是逗号、数值之间的分隔也用了逗号,这是个设计问题!如果是“456,366.37=456,366.36”,中间用等号分隔(或用其他字符),那按youbl的方法取得结果将非常容易(这应该把是你改问“那我这样问好了,如何把点号後的逗号换成等号?”的原因)。
其实如果每数值必是多位小数,那识别也不麻烦,规律就是:小数点后的识别的第一个逗号就是你要换成等号的字符!
请参考:
string str = "456,366.37,456,366.36";
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '.')
{
do
{
i++;
}
while (i < str.Length && str[i] != ',');
if (i < str.Length)
{
str = str.Remove(i, 1);
str = str.Insert(i, "=");
}
}
}
string[] sarr = str.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
double[] darr = new double[sarr.Length];
for (int i = 0; i < sarr.Length; i++)
{
darr[i] = Convert.ToDouble(sarr[i]);
}
热心网友
时间:2024-11-30 09:03
采用字符串处理方法。下面有几种方法你可以练习一下。以后碰到类似的为题也可以解决的。
IndexOf
已重载。报告 String 在此实例中的第一个匹配项的索引或一个或多个字符的索引。
LastIndexOf
已重载。报告指定的 Unicode 字符或 String 在此实例中的最后一个匹配项的索引位置。
LastIndexOfAny
已重载。报告在 Unicode 数组中指定的一个或多个字符在此实例中的最后一个匹配项的索引位置。
PadLeft
已重载。右对齐此实例中的字符,在左边用空格或指定的 Unicode 字符填充以达到指定的总长度。
PadRight
已重载。左对齐此字符串中的字符,在右边用空格或指定的 Unicode 字符填充以达到指定的总长度。
Remove
从此实例中的指定位置开始删除指定数目的字符。
Replace
已重载。将此实例中的指定 Unicode 字符或 String 的所有匹配项替换为其他指定的 Unicode 字符或 String。
Split
已重载。标识此实例中的子字符串(它们由数组中指定的一个或多个字符进行分隔),然后将这些子字符串放入一个 String 数组中。
Substring
已重载。从此实例检索子字符串。
ToLower
已重载。返回此 String 的小写形式的副本。
ToString
已重载。已重写。将此实例的值转换为 String。
ToUpper
已重载。返回此 String 的大写形式的副本。
Trim
已重载。从此实例的开始位置和末尾移除一组指定字符的所有匹配项。
TrimEnd
从此实例的末尾移除 Unicode 字符数组中指定的一组字符的所有匹配项。
TrimStart
从此实例的开始位置移除 Unicode 字符数组中指定的一组字符的所有匹配项。
热心网友
时间:2024-11-30 09:04
楼上很多人说用Replace,那难道,123,4,5.67怎么办??
正确的做法是用Parse方法,参考代码:
string s = "456,366.36";
double num;
if(double.TryParse(s, out num)){
// 转换成功,num就是456366.36这个数值
}else{
// 转换失败,s不是正确的数值格式
}
热心网友
时间:2024-11-30 09:04
晕,replace(",",""),如果还想要数值型,再转换
这还用讨论么,就是replace,有人说123,4,5.67这样的怎么办,与多少个逗号有关吗,第二这位朋友,你的double.TryParse更不合理,本来是数值型,只不过含有千分位,你这样就不能转换成真实值了,多么简单的事情
看到追问中描述,你那样没有方法的,一个字符既是分隔符又是字符串中的一员,肯定不行的,你必须改掉分隔符
热心网友
时间:2024-11-30 09:05
假如本来就是数字类型、直接 ToString 就OK。假如是是字符串直接把 , 替换为空字符