在字符串的每个第四个符号后添加字符

时间:2013-11-10 05:43:58

标签: c# .net string replace

我有像"blabllabnsdfsdfsd"这样的字符串 我想把它"blab-llab-nsdf-sdfs"

以某种方式可以使用Regex.Replace吗? 这样做的最佳方式是什么?

8 个答案:

答案 0 :(得分:8)

string bla = "blabllabnsdfsdfsd";

bla = Regex.Replace(bla, ".{4}", "$0-");
bla = bla.Remove(bla.Length - 1);

答案 1 :(得分:1)

最简单的方法是使另一个字符串将此字符串复制到该字符中,并在每4个字符后添加-

string a = "abcdefghijklmn";
List<char> b= new List<char>();
int j = 0;

for (int i = 0; i < a.Length; i++)
{
    if (i % 4 == 0)
    b.Add('-');
    b.Add(a[i]);
}

String result = new String(b.ToArray()) ;

答案 2 :(得分:0)

我会说for循环。

for( i = 0 ; i < string.length ; i+4){
   string.addAtPosition(i , "-");
}

函数名称取决于语言。

答案 3 :(得分:0)

for(int i = 0; i < str.Length; ++i)
{
    if(i % 4 == 0 && i != 0)
        newStr += "-" + str[i];
    else
        newStr += str[i];
 }

你走了。 你从分部拿出模数得出结论它是第4个字符。

答案 4 :(得分:0)

一种方法是:

string s = "blabllabnsdfsdfsd";
StringBuilder sb = new StringBuilder();
int position = 0;
// add a `-` every 4 chars
while (position < s.Length -4) // the (-4) is to avoid the last `-`
{
    sb.Append(s.Substring(position, 4));
    sb.Append("-");
    position += 4;
}
sb.Append(s.Substring(position)); // Adds the last part of the string
Console.Out.WriteLine("out" + sb.ToString());

输出:blab-llab-nsdf-sdfs-d

你可以玩它...你可以用while (position <s.Length)运行循环(没有-4,然后修剪字符串以删除最后-,依此类推。

呵呵,注意到我的输入中有一个额外的d,因此输出中有额外的-d

答案 5 :(得分:0)

尝试并测试

List<String> str = new List<String>();

String myString = "blabllabnsdfsdfsd";
int index = 0;

for (int i = 0; i < myString.Length; i = i + 4)
{
    index = i;
    if (myString.Length >= index + 4)
        str.Add(myString.Substring(index, 4));
}

myString = String.Join("-", str.ToArray());

这是证据

enter image description here

答案 6 :(得分:0)

这个问题看起来很简单,但是看一下答案的范围,有很多不同的方法可以实现。假设您要在最后一个短划线-

之后保留最后一个字符,这是我的看法
var value = "blabllabnsdfsdfsd";

const int lengthOfSeperator = 4;

for (var i = 0; i <= Math.Floor(value.Length / (decimal)lengthOfSeperator); i++)
{
    if (lengthOfSeperator + (lengthOfSeperator * i) + i > value.Length) continue;
    value = value.Insert(lengthOfSeperator + (lengthOfSeperator * i) + i, "-");
}

返回blab-llab-nsdf-sdfs-d

答案 7 :(得分:0)

快速单行:

        string blab = "blabllabnsdfsdfsd";
        string blab2 = String.Join("-", Regex.Matches(blab, ".{1,4}").OfType<Match>().Select(s => s.ToString()).ToArray());
        Console.WriteLine(blab);
        Console.WriteLine(blab2);

作为字符串扩展名:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string blab = "blabllabnsdfsdfsd";
        string blab2 = blab.Chunk("-", 4);
        Console.WriteLine(blab);
        Console.WriteLine(blab2);
    }
}

public static class Extensions
{
    public static string Chunk(this String str, string separator, int groupsOf)
    {
        string[] chunks = System.Text.RegularExpressions.Regex
            .Matches(str, ".{1," + groupsOf.ToString() + "}")
            .OfType<System.Text.RegularExpressions.Match>()
            .Select(s => s.ToString())
            .ToArray();
        return String.Join(separator, chunks);
    }
}