使用c#.net拆分字符串 [英] Split string using c# .net
问题描述
嗨我的价值如
BRICKFACE,1400,125.0,9,0.0,0.0,0.2777779,0.06296301,0.66666675 ,0.31111118,6.185185,7.3333335,7.6666665,3.5555556,3.4444444,4.4444447,-7.888889,7.7777777,0.5456349,-1.1218182
BRICKFACE,188.0,133.0,9,0.0,0.0,0.33333334,0.26666674,0.5,0.077777736,6.6666665, 8.333334,7.7777777,3.8888888,5.0,3.3333333,-8.333333,8.444445,0.53858024,-0.92481726
其中的文本文件需要插入这里的数据实际上我们有两列插入,从
BRICKFACE开始到-1.1218182
和
BRICKFACE开始,-0.92481726
是我试过的另一个专栏我的编码
试试
{
foreach ( string f in Directory.GetFiles(foldername))
{
s1 = File.ReadAllText(f);
}
ary = s1.Split(' \ n');
j = 1 ;
for (i = 0 ; i < ; 5000 ; i ++)
{
store_dataset(ary [i],j);
j ++;
}
MessageBox.Show( 数据提取成功);
}
catch (异常错误)
{
}
void store_dataset( string str, int z)
{
尝试
{
string [] arr = str.Split(' \ n',' ,');
string ss = 插入数据集(Sno,REGION-CENTROID-COL,REGION-CENTROID-ROW,REGION-PIXEL-COUNT,SHORT-LINE-DENSITY-5,SHORT-LINE-DENSITY-2,VEDGE-MEAN,VEDGE-SD,HEDGE- MEAN,HEDGE-SD,强度均值,RAWRED-MEAN,RAWBLUE-MEAN,RAWGREEN-MEAN,EXRED-MEAN,EXMUE-MEAN,EXGREEN-MEAN,VALUE-MEAN,SATURATION-MEAN,HUE-MEAN)值(@ 16 ,@ 1,@ 2,@ 3,@ 4,@ 5,@ 6,@ 7,@ 8,@ 9,@ 10 @ 11 @ 12 @ 13 @ 14 @ 15 @ 16 @ 17,@ 18 @ 19)跨度>;
cmd = new SqlCommand(ss,cn.con);
cmd.Parameters.AddWithValue( @ 19,z);
cmd.Parameters.AddWithValue( @ 1,arr [ 0 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 2,arr [ 1 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 3,arr [ 2 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 4,arr [ 3 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 5,arr [ 4 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 6,arr [ 5 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 7,arr [ 6 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 8,arr [ 7 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 9,arr [ 8 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 10,arr [ 9 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 11,arr [ 10 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 12,arr [ 11 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 13,arr [ 12 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 14,arr [ 13 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 15,arr [ 14 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 16,arr [ 15 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 17,arr [ 16 跨度>] TRIM());
cmd.Parameters.AddWithValue( @ 18,arr [ 17 跨度>] TRIM());
cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch (异常错误)
{
}
我在此行收到错误cmd.Parameters.AddWithValue(@ 2,arr [1] .Trim());因为索引是数组的外部界限pls帮我解决问题
你输入的字符串(str)在这一行:
< pre lang =c#> void store_dataset( string str, int z)
不包含逗号,因此arr
数组在索引1处没有值(这意味着第二个元素)。
调试并检查输入的字符串。
干杯,
Edo
Hi i have an value like
BRICKFACE,1400,125.0,9,0.0,0.0,0.2777779,0.06296301,0.66666675,0.31111118,6.185185,7.3333335,7.6666665,3.5555556,3.4444444,4.4444447,-7.888889,7.7777777,0.5456349,-1.1218182
BRICKFACE,188.0,133.0,9,0.0,0.0,0.33333334,0.26666674,0.5,0.077777736,6.6666665,8.333334,7.7777777,3.8888888,5.0,3.3333333,-8.333333,8.444445,0.53858024,-0.92481726
Its in text file i nedd to insert these data in database here actually we have two columns to insert thats begin from
BRICKFACE to -1.1218182
and
BRICKFACE to,-0.92481726
is another column i tried wiyh my coding
try
{
foreach (string f in Directory.GetFiles(foldername))
{
s1 = File.ReadAllText(f);
}
ary = s1.Split('\n');
j = 1;
for (i = 0; i < 5000; i++)
{
store_dataset(ary[i], j);
j++;
}
MessageBox.Show("Data Extracted Successfully");
}
catch (Exception error)
{
}
void store_dataset(string str, int z)
{
try
{
string[] arr = str.Split('\n',',');
string ss = "insert into Dataset(Sno,REGION-CENTROID-COL,REGION-CENTROID-ROW,REGION-PIXEL-COUNT,SHORT-LINE-DENSITY-5,SHORT-LINE-DENSITY-2,VEDGE-MEAN,VEDGE-SD,HEDGE-MEAN,HEDGE-SD,INTENSITY-MEAN,RAWRED-MEAN,RAWBLUE-MEAN,RAWGREEN-MEAN,EXRED-MEAN,EXBLUE-MEAN,EXGREEN-MEAN,VALUE-MEAN,SATURATION-MEAN,HUE-MEAN ) values(@16,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19)";
cmd = new SqlCommand(ss, cn.con);
cmd.Parameters.AddWithValue("@19", z);
cmd.Parameters.AddWithValue("@1", arr[0].Trim());
cmd.Parameters.AddWithValue("@2", arr[1].Trim());
cmd.Parameters.AddWithValue("@3", arr[2].Trim());
cmd.Parameters.AddWithValue("@4", arr[3].Trim());
cmd.Parameters.AddWithValue("@5", arr[4].Trim());
cmd.Parameters.AddWithValue("@6", arr[5].Trim());
cmd.Parameters.AddWithValue("@7", arr[6].Trim());
cmd.Parameters.AddWithValue("@8", arr[7].Trim());
cmd.Parameters.AddWithValue("@9", arr[8].Trim());
cmd.Parameters.AddWithValue("@10", arr[9].Trim());
cmd.Parameters.AddWithValue("@11", arr[10].Trim());
cmd.Parameters.AddWithValue("@12", arr[11].Trim());
cmd.Parameters.AddWithValue("@13", arr[12].Trim());
cmd.Parameters.AddWithValue("@14", arr[13].Trim());
cmd.Parameters.AddWithValue("@15", arr[14].Trim());
cmd.Parameters.AddWithValue("@16", arr[15].Trim());
cmd.Parameters.AddWithValue("@17", arr[16].Trim());
cmd.Parameters.AddWithValue("@18", arr[17].Trim());
cmd.ExecuteNonQuery();
cmd.Dispose();
}
catch (Exception error)
{
}
Am getting error at this line cmd.Parameters.AddWithValue("@2", arr[1].Trim()); as Index was outside bound of array pls help me to solve dis issue
Your input string (str) at this line:
void store_dataset(string str, int z)
does not contain a comma, hence thearr
array does not have a value at index 1 (which means the second element).
Debug and check you input string.
Cheers,
Edo
这篇关于使用c#.net拆分字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!