基于多个空格拆分字符串
本文关键字:字符串 拆分 空格 于多个 | 更新日期: 2023-09-27 18:21:27
我有一个字符串,如下
ABC PQR 123 R1234 TREW
我需要对其进行拆分,并将各个值放入数据库中。
数据库表看起来像这个
Col1 Col2 Col3 Col4 Col5 Col6
ABC PQR 123 R1234 TREW
我可以使用split函数在空格处进行拆分,但有时有多个空格,然后我想在表中插入一个空格,所以在上面的字符串中,我在123和R1234之间有两个空格。我需要在Col4中插入空格来表示字符串的该部分中没有任何内容。可以有两个以上的空格,这意味着Col4和Col5都可以是空的,所以每当有两个空格时,我需要在相应的列中输入空格,如果有一个空格,我就需要在数据库中输入值。我怎样才能做到这一点。
任何帮助都将不胜感激。
因此,您有用空格分隔的列,只要值本身不包含空格,这就不是问题。你只需要使用String.Split(new[]{' '}, StringSplitOptions.None)
:
string[] allFields = str.Split(new[]{' '}, StringSplitOptions.None);
现在,string[]
中的每个字符串都是表的列值。如果有一个空字符串,则表示列的值也是空的。
所以假设sql服务器:
string[] allFields = "ABC PQR 123 R1234 TREW".Split(new[] { ' ' }, StringSplitOptions.None);
if(allFields.Length >= 6) // == 6 if more values than columns is exceptional
{
string sql = @"INSERT INTO table(Col1,Col2,Col3,Col4,Col5,Col6)
VALUES(@Col1,@Col2,@Col3,@Col4,@Col5,@Col6)";
using(var con = new SqlConnection(Properties.Settings.Default.ConnectionString))
using (var cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@Col1", allFields[0]);
cmd.Parameters.AddWithValue("@Col2", allFields[1]);
cmd.Parameters.AddWithValue("@Col3", allFields[2]);
cmd.Parameters.AddWithValue("@Col4", allFields[3]);
cmd.Parameters.AddWithValue("@Col5", allFields[4]);
cmd.Parameters.AddWithValue("@Col6", allFields[5]);
con.Open();
int inserted = cmd.ExecuteNonQuery();
}
}
我想这可以使用TextFieldParser类进行解析。
看看这篇很好的文章,它还允许指定字段长度。
链接中的一部分:
reader.SetFieldWidths(5, 21, 7, -1)
使用它,您还可以处理可变长度字段。