string str1 = "12345ABC...\\...ABC100000";
// Hypothetically huge string of 100000 + Unicode Chars
str1 = str1.Replace("1", string.Empty);
str1 = str1.Replace("22", string.Empty);
str1 = str1.Replace("656", string.Empty);
str1 = str1.Replace("77ABC", string.Empty);
// ... this replace anti-pattern might happen with upto 50 consecutive lines of code.
str1 = str1.Replace("ABCDEFGHIJD", string.Empty);
Run Code Online (Sandbox Code Playgroud)
我继承了一些与上面的代码片段相同的代码.它需要一个巨大的字符串,并从大字符串中替换(删除)常量较小的字符串.
我相信这是一个非常耗费内存的过程,因为每个替换都会在内存中分配新的大型不可变字符串,等待通过GC死亡.
1.更换这些值的最快方法是什么,忽略内存问题?
2.实现相同结果的最有效的内存方式是什么?
我希望这些是相同的答案!
在这些目标之间适合某些地方的实用解决方案也值得赞赏.
假设:
我有一个java字符串,它有一个可变长度.
我需要将这个片段"<br>"放入字符串中,比方说每10个字符.
例如,这是我的字符串:
`this is my string which I need to modify...I love stackoverlow:)`
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得这个字符串?:
`this is my<br> string wh<br>ich I nee<br>d to modif<br>y...I love<br> stackover<br>flow:)`
Run Code Online (Sandbox Code Playgroud)
谢谢
我使用下面的代码来分割字符串,但这需要很多时间.
using (StreamReader srSegmentData = new StreamReader(fileNamePath))
{
string strSegmentData = "";
string line = srSegmentData.ReadToEnd();
int startPos = 0;
ArrayList alSegments = new ArrayList();
while (startPos < line.Length && (line.Length - startPos) >= segmentSize)
{
strSegmentData = strSegmentData + line.Substring(startPos, segmentSize) + Environment.NewLine;
alSegments.Add(line.Substring(startPos, segmentSize) + Environment.NewLine);
startPos = startPos + segmentSize;
}
}
Run Code Online (Sandbox Code Playgroud)
请建议我另一种方法将字符串拆分为固定大小的较小块
编辑:谢谢你们所有人.Python解决方案闪电般快速:)
我有一个看起来像这样的文件:
132,658,165,3216,8,798,651
Run Code Online (Sandbox Code Playgroud)
但它的MUCH较大(〜600 KB).没有换行符,除了文件末尾的换行符.
而现在,我必须总结那里的所有价值观.我希望最终的结果非常大,但如果我用C++总结它,我就拥有一个bignum库,所以它应该不是问题.
我该怎么做,用什么语言/程序?C++,Python,Bash?