2012-06-15 70 views
0

我想替换字符串中的逗号。C#用位置替换字符串

例如,数据是零件的货币值。

例如, 453,27这是我从SAP数据库中获得的值

我需要将逗号替换为一段时间以将值修复为正确的数量。有时候,它会成千上万。

例如, 2,356,34这个值需要是2,356.34

所以,我需要帮助操纵字符串来替换从最后2个字符的逗号。

感谢您的帮助

+3

为什么要像2,356,34一些存储在这种方式,如果一个逗号意味着要么是一个千个分隔符或小数点分隔符?这对我来说看起来很奇怪 –

+1

另外,你应该真正向我们展示你已经尝试过的东西 –

+0

这只是它从数据库传来的方式。数据库像这样保存它,并以某种方式理解它。这对我来说也没有意义。 – tluck234

回答

0
string x = "2,356,34"; 
if (x[x.Length - 3] == ',') 
{ 
    x = x.Remove(x.Length - 3, 1); 
    x = x.Insert(x.Length - 2, "."); 
} 
+0

认识到,千位数也使用逗号的句点。使用您的代码将这两个问题更改为正确的格式。 – tluck234

+0

@ tluck234 - 那会更有意义。您收到*欧洲*格式,正试图读取其值,但您的解析设置为*美国*文化。另一种解决方法是在您分析文件时将文化设置为欧洲*。 [我不知道确切的细节,但查找“文化”/“千分位数”/“小数点”]。 – ToolmakerSteve

1
string a = "2,356,34"; 
int pos = a.LastIndexOf(','); 
string b = a.Substring(0, pos) + "." + a.Substring(pos+1); 

你需要添加一点检查那里有串等但这是核心代码中没有逗号例。

你也可以用正则表达式来实现,但这很简单而且合理高效。

+0

只需将其放入。像梦一样奔跑。添加到数据库时没有更多的错误。 LastIndex是它的关键。我已经尝试了一些与此相关的东西,但无法弄清楚如何将其置于该位置。非常感谢你。将很快标记为答案 – tluck234

+0

这是非常低效的 – Jonny

1

快速谷歌搜索给了我这样的: ''

void replaceCharWithChar(ref string text, int index, char charToUse) 
{ 
    char[] tmpBuffer = text.ToCharArray(); 
    buffer[index] = charToUse; 
    text = new string(tmpBuffer); 
} 

所以你的 “charToUse” 应该是。如果它始终是结束2个字符,你的指数应该是 text.length - 3

http://www.dreamincode.net/code/snippet1843.htm

+0

它应该是-3而不是-2。 :) – MAV

+0

哎呀,同时在电话中说话:) –

0

使用此:

string str = "2,356,34"; 
string[] newStr = str.Split(','); 
str = string.Empty; 
for (int i = 0; i <= newStr.Length-1; i++) 
{ 
    if (i == newStr.Length-1) 
    { 
     str += "."+newStr[i].ToString(); 
    } 
    else if (i == 0) 
    { 
     str += newStr[i].ToString(); 
    } 
    else 
    { 
     str += "," + newStr[i].ToString(); 
    } 
} 
string s = str; 
0

如果我理解正确的话,你总是需要用句点替换最后的逗号。

public string FixSAPNumber(string number) 
{ 
    var str = new StringBuilder(number); 
    str[number.LastIndexOf(',')] = '.'; 
    return str.ToString(); 
} 
0
string item_to_replace = "234,45"; 

var item = decimal.Parse(item_to_replace); 

var new_item = item/100; 

//if you need new_item as string 
//then new_item.ToString(Format)