0

我有这样的字符串,"blabllabnsdfsdfsd" 我想制作它"blab-llab-nsdf-sdfs"

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

4

8 回答 8

8
string bla = "blabllabnsdfsdfsd";

bla = Regex.Replace(bla, ".{4}", "$0-");
bla = bla.Remove(bla.Length - 1);
于 2013-11-10T06:09:39.080 回答
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()) ;
于 2013-11-10T05:56:40.160 回答
0

我会说一个 for 循环。

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

函数名称取决于语言。

于 2013-11-10T05:49:36.717 回答
0
for(int i = 0; i < str.Length; ++i)
{
    if(i % 4 == 0 && i != 0)
        newStr += "-" + str[i];
    else
        newStr += str[i];
 }

干得好。您从除法中取模得出结论它是第 4 个字符。

于 2013-11-10T05:51:17.657 回答
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

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

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

于 2013-11-10T05:54:10.903 回答
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());

这里有证据

在此处输入图像描述

于 2013-11-10T06:00:44.530 回答
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

于 2013-11-10T06:06:38.353 回答
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);
    }
}   
于 2013-11-10T06:06:40.417 回答