我有一个字符串,类似这样:
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.
我必须分开它。
前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
中的值导入数据库取决于您的实现,但这应该会给您一个良好的开端。