StringExtensions 類別

提供公用程式方法,以用來將字串值轉換成其他資料型別。

System.Object
  System.Web.WebPages.StringExtensions

命名空間:  System.Web.WebPages
組件:  System.Web.WebPages (在 System.Web.WebPages.dll 中)

public static class StringExtensions

StringExtensions 型別公開下列成員。

  名稱說明
公用方法靜態成員As<TValue>(String)將字串轉換成指定資料型別的強型別值。
公用方法靜態成員As<TValue>(String, TValue)將字串轉換成指定的資料型別並指定預設值。
公用方法靜態成員AsBool(String)將字串轉換成布林 (true/false) 值。
公用方法靜態成員AsBool(String, Boolean)將字串轉換成布林 (true/false) 值並指定預設值。
公用方法靜態成員AsDateTime(String)將字串轉換成 DateTime 值。
公用方法靜態成員AsDateTime(String, DateTime)將字串轉換成 DateTime 值並指定預設值。
公用方法靜態成員AsDecimal(String)將字串轉換成 Decimal 數字。
公用方法靜態成員AsDecimal(String, Decimal)將字串轉換成 Decimal 數字並指定預設值。
公用方法靜態成員AsFloat(String)將字串轉換成 Single 數字。
公用方法靜態成員AsFloat(String, Single)將字串轉換成 Single 數字並指定預設值。
公用方法靜態成員AsInt(String)將字串轉換成整數。
公用方法靜態成員AsInt(String, Int32)將字串轉換成整數並指定預設值。
公用方法靜態成員Is<TValue>檢查是否可以將字串轉換成指定的資料型別。
公用方法靜態成員IsBool檢查是否可以將字串轉換成布林 (true/false) 型別。
公用方法靜態成員IsDateTime檢查是否可以將字串轉換成 DateTime 型別。
公用方法靜態成員IsDecimal檢查是否可以將字串轉換成 Decimal 型別。
公用方法靜態成員IsEmpty檢查字串值是否為 null 或空白。
公用方法靜態成員IsFloat檢查是否可以將字串轉換成 Single 型別。
公用方法靜態成員IsInt檢查是否可以將字串轉換成整數。
上層

網頁通常會接受字串形式的使用者輸入。典型的範例是包含使用者帳戶資訊之 HTML 表單的頁面。此表單可能包含用以輸入文字資訊、日期、數字、true 或 false 值及貨幣值的欄位。當使用者將資料提交至網頁伺服器時,會以字串形式透過 HTTP 來傳送值。當您的伺服器程式碼處理已公佈的資料時,您通常會想要將字串值轉換成其他資料型別。例如,如果日期和數字是處於適當的日期或數字資料型別,而非處於字串格式,就可以更有效率地以程式設計方式來加以比較、排序及使用。

StringExtensions 類別包含兩個類別的方法,這些方法可以用來將字串轉換成其他資料型別:

  • As 方法。這些方法的名稱都是以 As 為開頭,而且會以 As() 方法為根據。它們會將字串值轉換成指定的型別。例如,AsInt() 方法會將字串值「31」轉換成整數型別的實際值 31。同理,AsBool() 方法會將字串值「true」轉換成布林型別的值 true

  • Is 方法。這些方法的名稱都是以 Is 為開頭,而且會以 Is<TValue>(String) 方法為根據。它們會測試是否可將字串值轉換成指定的型別。例如,如果傳遞給 IsBool(String) 方法的字串值為 "true""false",該方法會傳回 true。如果傳遞給 IsDateTime(String) 方法的字串值 (例如,「12/25/2010」的日期字串值) 可以轉換成 T:System.DateTime 值,該方法便會傳回 true

下列範例示範如何使用 StringExtensions 類別中的數種方法來處理使用者輸入,以及將字串值轉換成其他資料型別。

@helper BuildOutput (string message, object value, string field) {
    if(value == null) {
        <p>@field:  @message </p>
    }
    else {
        <p>@field:  @message  @value</p>  
    }
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>String Extensions Methods</title>
    <meta charset="utf-8" />
  </head>
<body style="margin-left: 50px">
@{  
  if(IsPost) {
    // Retrieve the values that the user entered.
    var msgWrongValue = "Sorry, the submitted value cannot be converted to the "  
       + "specified data type.";
    var msgSubmittedValue = "Submitted value is: ";
    int numInt = 0;
    float numFloat = 0;
    decimal numDec = 0; 
    DateTime strDate; 
    bool weekday = false; 

    <h2>User Input Strings Converted to Other Types</h2>
    // Test and convert strings to data types.
    if(Request["txtNumber1"].IsInt()) {
        numInt = Request["txtNumber1"].AsInt();
        @BuildOutput(msgSubmittedValue, numInt, "Integer field");
    }
    else {
        @BuildOutput(msgWrongValue, null, "Integer field");
    }
    if(Request["txtNumber2"].IsFloat()) {
        numFloat = Request["txtNumber2"].AsFloat();
        @BuildOutput(msgSubmittedValue, numFloat, "Floating-point field");
    }
    else {
        @BuildOutput(msgWrongValue, null, "Floating-point field");
    }
    if(Request["txtNumber3"].IsDecimal()) {
        numDec = Request["txtNumber3"].AsDecimal();
        @BuildOutput(msgSubmittedValue, numDec, "Decimal field");
    }
    else {
        @BuildOutput(msgWrongValue, null, "Decimal field");
    } 
    if(Request["txtNumber4"].IsEmpty()) {
        @BuildOutput(msgSubmittedValue, "", "Empty field");
    }
    else {
        @BuildOutput("Try again and do not enter a value.", null, "Empty field");
    } 
    if(Request["txtDate"].IsDateTime()) {
        strDate = Request["txtDate"].AsDateTime();
        @BuildOutput(msgSubmittedValue, strDate, "Date/time field");
    }
    else {
        @BuildOutput(msgWrongValue, null, "Date/time field");
    } 
    // The checkbox is different, since the value is either checked or not.
    // Convert that value to a boolean, and then use AsBool.
    if(Request["chkBoolean"]=="weekend") {
        var temp = "true";
        // Not required to use IsBool check here, because the code assigned 
        // a value of "true", but this shows how to check the string value.
        if(temp.IsBool()) {
            weekday = temp.AsBool();
        }
    }
    else {
        var temp = "false";
        if(temp.IsBool()) {
            weekday = temp.AsBool();
        }
    }
    @BuildOutput(msgSubmittedValue, weekday, "Checkbox field");
  }
// Display the form if the page is not a postback.
 else {
  <p>Enter the specified values and then click <strong>Submit</strong>.</p>
  <form action="" method="post" style="border: 1px solid black; width: 500px; padding: 20px">
    <p><label for="txtNumber1">Integer field:<br />
    (Enter a whole positive number less than 2,147,483,648)
    </label><br />
    <input type="text" name="txtNumber1" />
    </p>
    <p><label for="txtNumber2">Floating point field:<br />
    (Enter a number in floating point format such as 2.7e25)
    </label><br />
    <input type="text" name="txtNumber2" />
    </p>
    <p><label for="txtNumber3">Decimal field:<br />
    (Enter a decimal number up to 28 digits total)
    </label><br />
    <input type="text" name="txtNumber3" />
    </p>
    <p><label for="txtNumber4">Empty field: <br />
    (Do not enter a value, this shows how to check for empty values.)
    </label><br />
    <input type="text" name="txtNumber4" />
    </p>
    <p><label for="txtDate">Date field:<br />
    (Enter a date string in a standard date format)
    </label><br />
    <input type="text" name="txtDate" />
    </p>
    <p><label for="chkBoolean">Checkbox field:<br />
    (Select the following checkbox if the condition is true.)
    </label><br />
    <input type="checkbox" name="chkBoolean" value="weekend" />Today is a weekend day<br />
    </p>
    <p><input type="submit" value="Submit" /></p>
  </form>
 }
}
</body>
</html>

這個型別的任何公用 static (在 Visual Basic 中為 Shared) 成員都是執行緒安全的。並不是所有的執行個體成員都保證可以用於所有的執行緒。
顯示: