2012-07-09 27 views
2

我將一個來自服務器的消息傳遞給一個名爲strObject的字符串變量。我希望將strObject中的字符串轉換爲大寫。所以,我使用ToUpper()方法。但是,當我添加一個斷點並通過該行時,我的字符串不會轉換爲大寫字母。 strObject變量將始終包含文本Task_status。我希望將其轉換爲TASK_STATUS。我錯過了什麼?發佈我的相關代碼如下: -ToUpper()方法不起作用

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); 
        } 
      } 
     } 
+3

.NET字符串不可變。 – leppie 2012-07-09 10:20:31

+0

http://stackoverflow.com/questions/2365272/why-net-string-is-immutable – 2012-07-09 10:21:31

回答

7

strObject.ToUpper()以大寫

使用返回string以下...

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

非常感謝朋友... :) – user1501034 2012-07-09 10:21:14

+0

雅...我的答案接受按鈕將工作6分鐘後..我正在等待接受你的答案只有 – user1501034 2012-07-09 10:27:41

1

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

+0

嘿非常感謝:0 – user1501034 2012-07-09 10:21:49

6

一個System.String是不變的,所以你必須重新分配,如:

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

操縱字符串的所有方法,保留原始的字符串不變,並返回一個字符串所需內容。您必須拿起該返回值並將其分配給某個東西。

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); 
      } 
     } 
} 
+0

嘿非常感謝:0 – user1501034 2012-07-09 10:21:39

2

字符串是不可變的,因此調用字符串上的函數實際上並不會改變字符串。相反,它們會返回字符串的修改副本。

這意味着您必須將函數的返回值(例如前面的例子)存儲在原始變量中。