如何在TextBox上格式化很长的文本?

时间:2014-10-02 03:50:22

标签: c# winforms textbox

如何在TextBox中格式化我的文本?

我的文字值是:

  

00010001008002020100010000530997000014820000148200010000012C00001482000014820000148200010000012C000014820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000003F

我希望我的输出像这样:

  

00010001-0080-02020100010000-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

2 个答案:

答案 0 :(得分:0)

假设您有一个固定的插入连字符的模式,并且每次字符串长度都相同,那么您可以这样做:

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

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

假设您没有预定义模式,您可以在任何地方插入连字符,因此如果需要,您仍然可以使用上面相同的代码进行调整以随机化indices数组。

答案 1 :(得分:0)

您的格式必须修复。它不应该是动态的。

我只是提供一个逻辑,你可以在regex字符串中追加更多细节。

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

输出:

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);