2014-10-02 34 views
-2

如何在TextBox中格式化我的文本?如何格式化TextBox上非常長的文本?

我的文字值爲:

00010001008002020100010000530997000014820000148200010000012C00001482000014820000148200010000012C000014820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000003F

而且我想我的輸出是這樣的:

00010001-0080-02020100010 000-53099700-00148200-00-14820001-0000-012C0000-14820000-1482000-0148-20001000-0012C000-0148-20000000-00000000-0000-00-000000000-00000000-0000-00000000-0000000-0000-00000000-00000000- 00000000-0000-00000000-00-00000-000001010-00000000-000000000-0000-000000000-00000003-F

+0

我建議格式的文本 – 2014-10-02 03:52:29

+0

我使用C#.NET先生使用jQuery。窗口形式 – user3562783 2014-10-02 03:53:43

+3

這是什麼模式?你的第二個字符串似乎只是隨機地插入了連字符。 – 2014-10-02 03:54:44

回答

0

您的格式必須是固定的。它不應該是動態的。

我只是提供了一個邏輯,你可以在正則表達式字符串中追加更多的細節。

string mystring = "000100010080" 
string regex = @"(\w{4})(\w{4})(\w{4})"; 
string strValue = Regex.Replace(mystring, regex, @"$1-$2-$3"); 

OUTPUT:

0001-0001-0080 

編輯:看看完整的例子

string[] patern = "XXXXXXXX-XXXX-XXXXXXXXXXXXXX-XXXXXXXX-XXXXXXXX-XX-XXXXXXXX- 
        XXXX-XXXXXXXX-XXXXXXXX-XXXXXXX-XXXX-XXXXXXXX-XXXXXXXX-XXXX- 
        XXXXXXXX-XXXXXXXX-XXXX-XX-XXXXXXXXX-XXXXXXXX-XXXX-XXXXXXXX- 
        XXXXXXX-XXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXX-XXXXXXXX-XX- 
        XXXXX-XXXXXXXXX-XXXXXXXX-XXXXXXXXX-XXXX-XXXXXXXXX-XXXXXXXX- 
        X".Split('-'); 

string mystring = "00010001008002020100010000530997000014820000148200010000012C0 
        0001482000014820000148200010000012C00001482000000000000000000 
        0000000000000000000000000000000000000000000000000000000000000 
        0000000000000000000000000000001010000000000000000000000000000 
        00000000003F"; 

string regex = string.Empty; 
string match = string.Empty; 
for(int i=0; i<patern.Length;i++) 
{ 
    regex += @"(\w{" + patern[i].Length + "})"; 
    match += "$" + (i + 1).ToString() + "-"; 
} 
match = match.Substring(0, match.Length - 1); 

txtMyTextBox.Text = Regex.Replace(mystring, regex, match); 
+0

好吧,先生。謝謝。順便一提。 – user3562783 2014-10-02 04:35:42

+0

先生?我可以再問一個問題嗎?正則表達式沒有出現在我的對象中。有什麼我應該添加我使用這個? – user3562783 2014-10-02 04:57:58

+0

你是否在表單中使用了System.Text.RegularExpressions;命名空間? – Shell 2014-10-02 04:59:13

0

假定有連字符插入的固定圖案和字符串長度相同的每一次,則可以做這樣的事情:

int[] indices = new int[] { 2, 5, 11 }; 
string yourLongString = "blahblahblah"; 

foreach(var index in indices.Reverse()) 
{ 
    yourLongString = yourLongString.Insert(index - 1, "-"); 
} 

OR

假設你沒有預定義的模式,你可以在任何地方插入連字符,因此如果需要的話,你仍然可以使用上面相同的代碼進行調整來隨機化索引數組。

+0

int [] indices = new int [] {2,5,11}; 我可以如何放置在這裏? – user3562783 2014-10-02 04:20:32

+0

我的模式是在我的字符串「blahblahblah」的2,5,11位置插入連字符。現在解決它自己。 – bit 2014-10-02 04:22:37

+0

好的。我在問先生,如果我可以在該代碼上放置任何模式的數量? – user3562783 2014-10-02 04:28:09