拆分大小小于1MB的字符串

时间:2015-07-31 13:14:46

标签: c# asp.net .net string c#-4.0

有人可以建议如何将字符串拆分为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);
        }
    }
}

2 个答案:

答案 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)的部分。