2013-12-09 42 views
0

我怎樣才能做到格式字符串自定義格式:轉換[字符串]的ToString([自定義格式])

int value = 5000; 
String.Format("{0:## ###}", value); 
value.ToString("##"); 

但值作爲字符串,而無需使用轉換爲多少? 是這樣的:

String.Format("{0:## ###}, "5000"); 

**更新:

我試圖創建一個通用的功能:

public string FormatString(string value, string format = "") { 
     if (value == null){ 
      return ""; 
     } 

     return String.Format("{0:" + format + "}", value); 
    } 

    public bool OtherFunction(id){ 
      var data = dc.GetData(id); 
      ViewBag.DescriptionText = FormatString(data.Description).Replace("\n", "<br />"); 
      ViewBag.Phone = FormatString(data.Phone, "(##) ####-#####"); 
      ViewBag.City= FormatString(data.City); 
      [...] 
    } 
+5

恐怕你真的不清楚你想達到什麼目的。 「## ###」格式專門用於格式化數字。當給予「你好世界」時,你會期待它做什麼? –

+0

你不能,如果你需要格式化一個字符串,你必須爲所述字符串編寫一個格式化程序,這可能比簡單地將字符串轉換爲數字要複雜得多。 – Tobberoth

+0

使用「Hello World」,我將調用函數而不指定格式。所以它將只是「Hello World」.. –

回答

1

我不認爲這樣的事情存在。像Jon說的那樣,這是爲數字設計的。

如果你只想「格式化」以#你可以寫簡單的功能,像這樣

public string FormatString(string value, string format = "") 
{ 
    if (String.IsNullOrEmpty(value) || String.IsNullOrEmpty(format)) 
     return value; 

    var newValue = new StringBuilder(format); 

    for (int i = 0; i < newValue.Length; i++) 
    { 
     if (newValue[i] == '#') 
      if (value.Length > 0) 
      { 
       newValue[i] = value[0]; 
       value = value.Substring(1); 
      } 
      else 
      { 
       newValue[i] = '0'; 
      } 
    } 

    return newValue.ToString(); 
} 

當然,這是非常簡單的。如果格式太長(如:填充'0'),並且格式太短(這裏:只是'截斷'剩餘的值),你將必須檢查並決定如何處理。

但我想你有一個想法如何做到這一點。

在我的磁盤上的某處我有類似這樣的代碼:以特殊方式格式化數字/發票號碼模式。如果我能找到這個,我會在博客上貼一些貼子並粘貼鏈接

+0

非常好!由於直接字符串格式是不可能的,類似的東西就是我想要實現的。 –