有人可以建议如何将字符串拆分为arrayLists,条件是arraylist的每个字符串大小应小于1 MB。
我在字符串变量中提供了字符串值。我需要遍历字符串值,然后检查字符串大小应始终> 1MB,如果大小超过1MB,则拆分字符串数据并将其存储在数组列表的子字符串中。
有人可以建议我如何在以下代码中实现它:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System;
class Program
{
public static void Main()
{
String[][] TextFile = new String[5][] { { "Mike", "Amy" }, { "Mary", "Albert" } } ;
for (int i = 0; i < TextFile.Length; i++)
{
TextFile[i] = new String[i + 1];
}
for (int i = 0; i < TextFile.Length; i++)
{
Console.WriteLine("Length of row {0} is {1}", i, TextFile[i].Length);
}
}
}
答案 0 :(得分:4)
你要做的事情有点尴尬。你怎么能得到每个字符的字节数,然后相应地计算字符串长度。
System.Text.ASCIIEncoding.Unicode.GetByteCount(string);
System.Text.ASCIIEncoding.ASCII.GetByteCount(string);
另一种进行调查的方法,如果你真的想尝试这种方法。
Encoding.Default.GetBytes("Hello");
答案 1 :(得分:1)
CharithJ的答案很好,但仅仅是为了完成。
如果您对尺寸要求不满意,那么我认为您不需要单独阅读/修改部件。如果是这种情况,你不需要它们在一个字符串中,而是一个byte []就足够了。这样您就不需要计算编码字符大小(甚至知道编码)。您可以将字符串转换为byte [](字节到字节)
static byte[] GetBytes(string str)
{
byte[] bytes = new byte[str.Length * sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
return bytes;
}
然后您可以使用this SO question将其分成小于1 048 576(1 MB)的部分。