C# C按位置替换字符串

C# C按位置替换字符串,c#,string,replace,C#,String,Replace,我正在尝试替换字符串中的逗号 例如,数据是零件的货币值 这是我从SAP数据库获得的值 我需要将逗号替换为句点,以将值固定为正确的值。现在,有时会有成千上万的人 2356,34这个值必须是2356.34 所以,我需要帮助操作字符串来替换逗号,逗号是从末尾开始的两个字符 谢谢你的帮助 string a = "2,356,34"; int pos = a.LastIndexOf(','); string b = a.Substring(0, pos) + "." + a.Substring(pos+1

我正在尝试替换字符串中的逗号

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

这是我从SAP数据库获得的值

我需要将逗号替换为句点,以将值固定为正确的值。现在,有时会有成千上万的人

2356,34这个值必须是2356.34

所以,我需要帮助操作字符串来替换逗号,逗号是从末尾开始的两个字符

谢谢你的帮助

string a = "2,356,34";
int pos = a.LastIndexOf(',');
string b = a.Substring(0, pos) + "." + a.Substring(pos+1);
您需要添加一些检查,以确定字符串中没有逗号等情况,但这是核心代码


你也可以用正则表达式来做,但这很简单,效率也相当高。

快速的谷歌搜索告诉我:

void replaceCharWithChar(ref string text, int index, char charToUse)
{
    char[] tmpBuffer = text.ToCharArray();
    buffer[index] = charToUse;
    text = new string(tmpBuffer);
}
所以你的图表应该是“.”。若始终是从末尾开始的2个字符,则索引应为 text.length-3

使用以下命令:

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;

如果我理解正确,您总是需要将最后一个逗号替换为句点

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

如果逗号是千位分隔符或十进制分隔符,为什么像2356,34这样的数字要以这种方式存储?这对Meals来说很奇怪,所以你应该向我们展示你已经尝试过的东西,它只是来自数据库的方式。数据库就这样保存了它,而且不知怎的它理解了它。这对我来说也没什么意义。可能的复制品就放进去了。像梦一样奔跑。添加到数据库时不再出现错误。最后一个索引是它的关键。我曾尝试过类似的方法,但不知道如何将其置于那种位置。非常感谢你。将标记为答案这是非常低效的,它应该是-3而不是-2哎呀,在电话里同时交谈:意识到千个数字也用句点作为逗号。使用您的代码将这两个问题更改为正确的格式。@tluck234-这样更有意义。您收到了欧洲格式,正在尝试读取其值,但您的解析设置为美国文化。另一种修复方法是在解析文化时将其设置为欧洲文化。[我不知道确切的细节,但请查找区域性/千位分隔符/小数点]。
public string FixSAPNumber(string number)
{
    var str = new StringBuilder(number);
    str[number.LastIndexOf(',')] = '.';
    return str.ToString();
}
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)