使用string.Replace(char,char)不会修改我的字符串

时间:2014-04-29 12:50:46

标签: c#

我的输入字符串input的值为0.003 m

我需要做一些事情;

  • 剥离标签
  • 用逗号(.
  • 替换所有点(,

这就是我的想法:

try
{
    if (input == "")
    {
        throw new Exception("Cannot have an empty String")
    }

    if(input.Contains('.'))
    {
        input.Replace('.', ',');
    }

    char[] CharactersToStrip = { ' ', 'm', 'k', 'g' };
    string output = input.TrimEnd(CharactersToStrip);

    return output;
}
catch (Exception Exception)
{
    throw new Exception(Exception.Message);
}

3 个答案:

答案 0 :(得分:3)

字符串是不可变的,你必须重新分配它:{​​{1}}

关于例外的主题,有几条评论要提供:

  • 不要抛弃一般input = input.Replace('.', ',');,而是抛出更具描述性的子类
  • 与上述相同,但是“catch”而不是“throw”
  • 命名变量Exception会导致很多混淆并违反命名约定。

答案 1 :(得分:3)

您需要将替换分配回输入:

if (input.Contains('.'))
{
    input = input.Replace('.', ',');
}

此外,您的try-catch完全是多余的。您所做的只是破坏堆栈信息,因此请将其完全删除。

答案 2 :(得分:1)

叹了口气,漫长的一天。我需要为替换的字符串赋值,它本身不能修复。

即。 input = input.replace('.', ',');

非常感谢。