我怎么能拆分字符串C#

时间:2010-10-13 15:23:28

标签: c# string split

我有一个字符串,类似这样:

12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.

我必须分开它。

前8个,然后是下4个,依此类推。

编辑:我更喜欢在单独的文件中定义片段的长度。 以及从外部文件中获取长度的程序。

  • 程序(length1 = a)
  • 档案(a = 8)

4 个答案:

答案 0 :(得分:4)

要划分字符串,您可以使用String.SubString()方法。它有一个接受起始位置和长度的重载:

string input = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";

string sub1 = input.SubString(0, 8);
string sub2 = input.SubString(8, 4);
// and so on.

要将数据插入数据库,您需要使用ADO.NET此处有许多在线示例。希望MSDN的链接能帮助您入门。

答案 1 :(得分:3)

您可以使用String.Substring

var field1 = myString.Substring(0,8);
var field2 = myString.Substring(8,4);

等等。

答案 2 :(得分:0)

我首先将该字符串更改为char [],然后使用一些额外的变量打印出来(或者你需要做什么)。

答案 3 :(得分:0)

这是一个使用LINQ根据指定的“页面”列表获取一组字符的解决方案。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//...
public static void TestStringSplit()
{
    var s = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.";
    var chars = s.ToCharArray().AsEnumerable();
    var pages = new List<int>() { 8, 4, 5, 3, 50, 50 };
    var output = new List<string>();

    for (int i = 0; i < pages.Count; i++)
    {
        var page = pages[i];

        output.Add(String.Join("",
            chars.Skip(pages.Where((p, j) => j < i).Sum(p => p)).Take(page)
            ));
    }

    output.ForEach(o => Console.WriteLine(o));
}

返回:

12345678
9012
34567
890
12345678901234567890123456789012345678901234567890
1234567890123456789012345678901234567890.

在上面的例子中,

  • pages变量表示您要从主字符串中获取的每个子字符串的大小。
  • Skip LINQ表达式正在跳过已经“分页”的所有字符。
  • Take LINQ表达式返回一组与您期望的大小相匹配的字符。

使用可枚举的char s的优势在于,Skip调用中的索引超出了范围异常,就像通常Substring调用一样。< / p>

如何使用数据填充pages变量以及如何将output中的值导入数据库取决于您的实现,但这应该会给您一个良好的开端。