我有这样的字符串,"blabllabnsdfsdfsd"
我想制作它"blab-llab-nsdf-sdfs"
Regex.Replace
以某种方式可行吗?这样做的最佳方法是什么?
string bla = "blabllabnsdfsdfsd";
bla = Regex.Replace(bla, ".{4}", "$0-");
bla = bla.Remove(bla.Length - 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()) ;
我会说一个 for 循环。
for( i = 0 ; i < string.length ; i+4){
string.addAtPosition(i , "-");
}
函数名称取决于语言。
for(int i = 0; i < str.Length; ++i)
{
if(i % 4 == 0 && i != 0)
newStr += "-" + str[i];
else
newStr += str[i];
}
干得好。您从除法中取模得出结论它是第 4 个字符。
一种方法是:
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
输出中有额外的。
久经考验
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());
这里有证据
这个问题看起来很简单,但是从答案的范围来看,有很多不同的方法可以实现这一点。这是我的看法,假设您想在最后一个破折号之后保留最后一个字符-
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
快速单线:
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);
}
}