有一个字符串让我们说
string mystring = "A\nB\nC\nD\nE\nF\nG\n"
希望用|转换它大块5个
string Converted string ="ABCDE|FG"
任何一个班轮解决方案..
我走这条路
private void TweakInputLines(string InputData)
{
List<string> lstInput = new List<string>();
if (!string.IsNullOrEmpty(InputData))
{
lstInput = InputData.Split('\n').ToList();
if (lstInput.Count > 4)
{
}
}
}
答案 0 :(得分:3)
试试这个衬垫
string mystring = "A\nB\nC\nD\nE\nF\nG\n";
var result = Regex.Replace(mystring.Replace("\n", ""), ".{5}", "$0|");
这是demo。
答案 1 :(得分:1)
一般解决方案(保留可变长度行):
string input = "A\nBC\nDEF\nG\nH\nI\nJKL\nMN\nO\nP\nQR\nS";
string output = string.Join("|", input.Split('\n')
.Select((s, i) => new { s, i })
.GroupBy(p => p.i / 5)
.Select(g => string.Join("", g.Select(p => p.s))));
输出:
ABCDEFGH|IJKLMNOP|QRS
<强>更新强>
如果您使用.Net 3.5,则需要在.ToArray()
方法中添加string.Join()
次来电。
string input = "A\nBC\nDEF\nG\nH\nI\nJKL\nMN\nO\nP\nQR\nS";
string output = string.Join("|", input.Split('\n')
.Select((s, i) => new { s, i })
.GroupBy(p => p.i / 5)
.Select(g => string.Join("", g.Select(p => p.s).ToArray()))
.ToArray());
更新2
另一个选择是使用@SriramSakthivel
稍加修改的解决方案string input = "A\nBC\nDEF\nG\nH\nI\nJKL\nMN\nO\nP\nQR\nS";
string output = Regex.Replace(input, @"((?:.*\n){4}.*)\n", "$1|").Replace("\n", "");
答案 2 :(得分:0)
简单代码
private void TweakInputLines(string InputData)
{
List<string> lstInput = new List<string>();
var returnstring = "";
if (!string.IsNullOrEmpty(InputData))
{
lstInput = InputData.Split('\n').ToList();
if (lstInput.Count > 9999)
{
int counter = 0;
foreach (var eachcharitem in lstInput)
{
counter++;
returnstring = returnstring + eachcharitem;
if (counter == 5)
{
returnstring = returnstring + "|";
counter = 0;
}
}
}
}
}
答案 3 :(得分:0)
另一种使用Linq的解决方案 - 它或多或少是一个&#34;单线&#34;:
string mystring = "A\nB\nC\nD\nE\nF\nG\n";
var str = mystring
.Select((value, index) => new { Index = index, Value = value }) // insert Index
.GroupBy(i => (int)(i.Index / 5)) // group by index / 5
.Select(value => String.Join("",value.Select(temp => temp.Value))) // create string out of grouped chars
.Aggregate((a,b) => a + "|" + b); // create one string out of splitted chars
// and join the "|"-string in between