2014-10-02 39 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