我有一個字符串,其中第三個最後一個字符有時是,
如果是這種情況,我想用.
替換它。該字符串也可以有其他的,
。有沒有一個優雅的解決方案呢?c#字符串字符替換
編輯:謝謝大家的答案。只是爲了澄清,是由倒數第三我指的是形式xxxxxx,xx
的字符串(這是一個歐洲貨幣東西)
我有一個字符串,其中第三個最後一個字符有時是,
如果是這種情況,我想用.
替換它。該字符串也可以有其他的,
。有沒有一個優雅的解決方案呢?c#字符串字符替換
編輯:謝謝大家的答案。只是爲了澄清,是由倒數第三我指的是形式xxxxxx,xx
的字符串(這是一個歐洲貨幣東西)
如何:
if (text[text.Length - 3] == ',')
{
StringBuilder builder = new StringBuilder(text);
builder[text.Length - 3] = '.';
text = builder.ToString();
}
編輯:希望以上僅僅是關於最有效的方法。你可以嘗試使用字符數組來代替:
if (text[text.Length - 3] == ',')
{
char[] chars = text.ToCharArray();
chars[text.Length - 3] = '.';
text = new string(chars);
}
使用Substring
也能發揮作用,但我不認爲這是任何更具可讀性:
if (text[text.Length - 3] == ',')
{
text = text.Substring(0, text.Length - 3) + "."
+ text.Substring(text.Length - 2);
}
編輯:我一直在假設中這種情況你已經知道文本將至少有三個字符長度。如果情況並非如此,那麼你顯然也需要一個測試。
+1 StringBuilder在這裏有點沉重,不是嗎? – 2011-08-08 13:50:03
@代碼:比較重?我想不出更有效率的方法 - 你能嗎? –
+1 - 如果op代表最後的第三個,那麼這是目前唯一可行的解決方案。 – JonH
string text = "Hello, World,__";
if (text.Length >= 3 && text[text.Length - 3] == ',')
{
text = text.Substring(0, text.Length - 3) + "." + text.Substring(text.Length - 2);
}
// text == "Hello, World.__"
+1,但他說「倒數第三個字符」,所以我不知道這是否意味着第三個**到最後一個字符。 – 2011-08-08 13:48:56
+1這個也是 – JonH
+1 @dtb - 很好的答案。對不起,我不能給出兩個正確的答案。 –
試試這個
System.Text.RegularExpressions.Regex.Replace([the_string], "(,)(.{2})$", ".$2")
應該這樣做,如果通過「第三最後一個字符」你從字面上指的是整個字符串中的第三最後一個字符。
這樣說 - 你可能需要調整,如果有新的行 - 例如添加RegexOptions.Singleline
枚舉作爲一個額外的參數。
爲了獲得更好的性能 - 也許 - 你可以預先聲明一個類體內的正則表達式:當你想使用它,它
static readonly Regex _rxReplace = new Regex("(,)(.{2})$", RegexOptions.Compiled);
然後只是:
var fixed = _rxReplace.Replace([the_string], ".$2");
+1 @Andras - 感謝您的回答 –
更合適的方法可能會使用文化
string input = "12345,67";
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("nl-NL");
decimal value = System.Convert.ToDecimal(input);
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
string converted = string.Format("{0:C}", value);
我知道現在的問題'已完成',但是+1。在OP編輯這個問題後,我確實想到了這個問題,以包括他之後的實際情況。 –
是逗號將被替換*總是*出現在第三個fr last最後的位置(如果它出現在所有)? –
你可以發佈一個示例字符串嗎? – 2011-08-08 13:47:30
@Fredrik - 是的,它總是會出現在倒數第三的位置。 –