簡體   English   中英

在vb.net中格式化字符串

[英]Format strings in vb.net

是否有將string格式化為指定格式的方法?

例如:

如果字符串值為

"05/05/2013 05:06:23"

如果格式化類型是

"d"

因此,如果我們同時傳遞兩個值,則輸出應為

05/05/2013

我嘗試使用函數Format("stirng value","format") ,但這給了我o / p的format

注意 :該函數應適用於所有datatypes

您必須將其解析為DateTime對象,然后以指定的格式再次使用ToString

Dim str = "05/05/2013 05:06:23"
Dim ci = new CultureInfo("en-US")
Dim formattedDate = DateTime.Parse(str).ToString("dd/MM/yyyy", ci) // Returns 05/05/2013"

不,沒有適用於所有數據類型的東西。

如果要轉換其他數據類型(例如Decimal ),請首先將字符串轉換為相應的類型( Decimal.Parse ..etc),然后再次將ToString用作所需的格式。

您可以像這樣創建自己的函數..

此函數可以接受任何類型並返回任何類型(僅在int和date上進行了測試)

Function ChangeThis(ByVal var As Object, ByVal Type As String) As Object
    If Not var.GetType.IsValueType() Then Return Nothing
    Select Case var.GetType().ToString
        Case "System.Int32" : MsgBox("Integer 32")
        Case "System.DateTime"
            If Type = "d" Then Return Convert.ToDateTime(var).Date
    End Select
    Return ""
End Function

你可以測試一下

Dim s As Date = ChangeThis(Now(), "d")
MsgBox(s)

這不是很好,但是可以幫助..

VB.NET Format功能將為您提供所需的內容。 您只需閱讀文檔以確保提供已知格式:

> (Strings:Format "12-03-04 5:01:23.456" "d")
d
> (Strings:Format "12-03-04 5:01:23.456" "Short Date")
12/03/2004
> (Strings:Format "12-03-04 5:01:23.456" "Long Date")
Friday, 12 March 2004
> (Strings:Format "50123.456" "Currency")
$50,123.46
>

上面實際上是DotLisp及其輸出,但它只是調用Microsoft.VisualBasic.Strings.Format

為此,您必須首先將字符串解析為datetime,然后可以使用:

myDateVariable.ToString("d")

嘗試使用.net string.format函數。 但是,格式字符串需要確切指定所需的輸出。 正如您已經發現的,僅使用“ format”作為格式字符串將輸出“ format”。

嘗試

Convert.ToDateTime("05/05/2013 05:06:23").ToString("dd/MM/yyyy")

您可以嘗試一下。

 Dim strRawdate As String = "05/05/2013 05:06:23"
 Dim dt As DateTime = DateTime.ParseExact(strRawdate, "M/d/yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture)
 Dim reformatDate As String = dt.ToString("M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM