ToUpper()方法不起作用

时间:2012-07-09 10:18:34

标签: c# .net

我从服务器传递一条消息,该消息存储在名为strObject的字符串变量中。我希望将strObject中的字符串转换为大写。所以,我使用ToUpper()方法。但是,当我添加一个断点并通过该行时,我的字符串不会转换为大写。 strObject变量将始终包含文本Task_status。我希望将其转换为TASK_STATUS。我错过了什么吗?在下面发布我的相关代码: -

public void VerifyValue(String strObject, String strValue, int row)
        {               
            strObject.ToUpper().Trim();
            strValue.ToUpper().Trim();
            switch (strObject)
            {
                case "TASK_STATUS":
                    if (m_taskStatus.taskStatus.ToString() == strValue)
                    {
                        ExcelRecorder(null, row);
                    }
                    else
                    {
                        ExcelRecorder("The value [" + m_taskStatus.taskStatus.ToString() + "] does not match with the given value.", row);
                    }
            }
        }

6 个答案:

答案 0 :(得分:7)

strObject.ToUpper()以大写

返回string

使用以下内容......

strObject = strObject.ToUpper().Trim();

答案 1 :(得分:6)

System.String是不可变的,因此您必须重新分配,例如:

strObject = strObject.ToUpper().Trim(); 

所有操纵字符串的方法,保持原始字符串不变,并返回带有所需内容的 new 字符串。您必须获取该返回值并将其分配给某些内容。

答案 2 :(得分:2)

字符串是不可变的,因此调用字符串上的函数实际上不会更改字符串。相反,他们会返回修改后的字符串副本。

这意味着您必须存储函数的返回值,例如原始变量。

答案 3 :(得分:1)

string.ToUpper()返回一个值,使用它。

答案 4 :(得分:1)

这不起作用,因为字符串是不可变的,你必须将值赋回strObject

strObject = strObject.ToUpper().Trim();

除了代码中显示的switch之外,没有什么可以做的,除非这不是整个代码,否则你可以删除它。

public void VerifyValue(String strObject, String strValue, int row)
{               
     //strObject.ToUpper().Trim();
     //strValue.ToUpper().Trim();
     if(strObject.ToUpper() ==  "TASK_STATUS")
     {
          if (m_taskStatus.taskStatus.ToString() == strValue.ToUpper())
          {
              ExcelRecorder(null, row);
          }
          else
          {
               ExcelRecorder("The value [" + m_taskStatus.taskStatus.ToString() + "] does not match with the given value.", row);
           }
       }
}

答案 5 :(得分:0)

字符串是不可变的,使用它们时需要记住。

您的方法将值插入到strObject和strValue变量中,您可以在其中调用各种辅助方法,但是这些辅助方法不会更改已创建的不可变字符串变量。

尽管原始变量是不可变的,但是您仍然可以设置等于原始值加上worker方法结果的新变量(即使名称相同)。

所以您真正需要做的就是更改

strObject.ToUpper().Trim();

strValue.ToUpper().Trim();

strObject = strObject.ToUpper().Trim()

strValue = strvalue.ToUpper().Trim()

这个答案几乎与我的答案here相同,但我认为两者都是正确的。