在每个第四个+符号后添加空格

时间:2010-11-05 16:02:02

标签: c# asp.net

我有这样的文字例如:

“A01 + B02 + C03 + D04 + E05 + F06 + G07 + H08 + I09 + J10 + K11 + L12 + M13 + N14 + O15 + P16”

我想在每个第四个'+'符号后添加一个空格。

这是因为如果文本在我页面的网格单元格中太长,那么它就会被切断。所以我想在将数据绑定到网格之前简单地包装字符串。

我玩了几个字符串方法,比如获取IndexOf和使用Insert添加空格,或使用StringBuilder从原始字符串中创建一个全新的字符串,但我无法获得最终结果解决方案正在运行。

任何帮助将不胜感激。 感谢。

7 个答案:

答案 0 :(得分:10)

使用正则表达式:

Pattern pattern = Pattern.compile("([^+]*\\+){4}");
Matcher matcher = pattern.matcher(str);
matcher.replaceAll("\1 ");

答案 1 :(得分:6)

您可以使用LINQ:

string input = "A01+B02+C03+D04+E05+F06+G07+H08+I09+J10+K11+L12+M13+N14+O15+P16";

string final = string.Join(
    "+", 
    input
        .Split('+')
        .Select( (s, i) => (i>0 && i%4==0) ? " "+ s : s));

答案 2 :(得分:6)

你可以使用CSS word-wrap属性来破坏特定宽度的字符串......

td.longString {
  max-width: 150px;
  word-wrap: break-word;
}

只需将CssClass="longString"设置为相关列。

答案 3 :(得分:3)

更容易:

input = Regex.Replace(input, @"((?:[\w_]+\+){4})", "$1 ");

答案 4 :(得分:2)

string text = "A01+B02+C03+D04+E05+F06+G07+H08+I09+J10+K11+L12+M13+N14+O15+P16";
string[] parts = test.Split( '+' );

StringBuilder output = new StringBuilder( );
for( int i = 0; i < parts.Length; i++ )
{
    if( i%4 == 0 )
    {
        output.Append( " " );
    }
    output.Append( parts[ i ] + "+" );
}

答案 5 :(得分:1)

这是我想到的第一个。虽然不是最美丽的。

var str = "A01+B02+C03+D04+E05+F06+G07+H08+I09+J10+K11+L12+M13+N14+O15+P16";
        var strings = str.Split(new [] {'+'});
        var builder = new StringBuilder(strings[0]);
        for(var i = 1;  i< strings.Length;i++)
        {
            builder.Append(i%4 == 0 ? "+ " : "+");
            builder.Append(strings[i]);
        }

答案 6 :(得分:0)

正则表达式都很好,但正如有人曾经说过的那样

  

有些人在面对问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。

这个简单的解决方案怎么样呢?

    String testString = "A01+B02+C03+D04+E05+F06+G07+H08+I09+J10+K11+L12+M13+N14+O15+P16";
    StringBuilder buffer = new StringBuilder(testString);

    int plusCount = 0;
    for (int i=0; i<buffer.length(); i++) {
        if (buffer.charAt(i) == '+')  {
            plusCount++;
            if (plusCount == 4) {
                buffer.insert(i+1, ' ');
                i++;
                plusCount=0;
            }
        }
    }