文字列内のコンマを置き換えようとしています。
たとえば、データは部品の通貨価値です。
例えば。453,27 これは SAP データベースから取得した値です
値を正しい金額に修正するには、コンマをピリオドに置き換える必要があります。今では数千になることもあります。
例えば。2,356,34 この値は 2,356.34 である必要があります
そのため、文字列を操作して、末尾から 2 文字のコンマを置き換えるのに助けが必要です。
助けてくれてありがとう
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);
}
したがって、「charToUse」は「.」にする必要があります。末尾から常に 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();
}
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)
string x = "2,356,34";
if (x[x.Length - 3] == ',')
{
x = x.Remove(x.Length - 3, 1);
x = x.Insert(x.Length - 2, ".");
}