3

我正在从服务器传递一条消息,该消息存储到一个名为 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);
                    }
            }
        }
4

6 回答 6

7

strObject.ToUpper()string以大写形式返回 a

使用以下...

strObject = strObject.ToUpper().Trim();
于 2012-07-09T10:19:38.823 回答
6

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

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

所有操作字符串的方法都保持原始字符串不变并返回具有所需内容的新字符串。您必须获取该返回值并将其分配给某物。

于 2012-07-09T10:20:35.273 回答
2

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

于 2012-07-09T10:20:33.367 回答
2

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

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

于 2012-07-09T10:21:42.823 回答
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);
           }
       }
}
于 2012-07-09T10:20:59.547 回答
0

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

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

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

所以你真正需要做的就是改变

strObject.ToUpper().Trim();

strValue.ToUpper().Trim();

strObject = strObject.ToUpper().Trim()

strValue = strvalue.ToUpper().Trim()

这个答案几乎与我在这里的答案重复,但我认为两者都是正确的。

于 2018-10-09T11:15:12.640 回答