c#拆分字符串并将拆分值赋给另一个变量
本文关键字:拆分 变量 另一个 字符 字符串 串并 | 更新日期: 2023-09-27 18:04:17
我试图分割字符串并分配不同的值。它返回给我的字符串是:0077 | PCK | PRD | 05025066840471 | 4 |开罐器| 1 | 10 B | | 20.00 | 0 | 100 | 0 | 0.00 | 0 | 0 | 1 | 0 | 0
所以我想在"|"上分割字符串,并将它们分别分配给另一个变量。这就是我想做的:
public static void LoadPRD(string sData)
{
string[] s = null;
prdType PRD = new prdType();
s = sData.Split("|");
PRD.bCode = s.Left(s[0], 14);
PRD.PCode = s.Left(s[1], 12);
PRD.Desc = s.Left(s[2], 40);
PRD.Pack = s.Val(s[3]);
PRD.Unit = s.Left(s[4], 12);
PRD.VATCode = s.Left(s[5], 1);
PRD.VATRate = Conversion.Val(s[6]);
PRD.Cost = Conversion.Val(s[7]);
PRD.Sell = Conversion.Val(s[8]);
PRD.Stock = Conversion.Val(s[9]);
PRD.AWS = Conversion.Val(s[10]);
PRD.OnOrder = Conversion.Val(s[11]);
PRD.OrderQty = Conversion.Val(s[12]);
PRD.LabelQty = Conversion.Val(s[13]);
PRD.Restriction = s.Left(s[14], 1);
PRD.MinStock = s.Val(s[15]);
PRD.PromoCode = s.Left(s[16], 3);
PRD.MnM = s.Left(s[17], 3);
}
错误消息说字符串在上下文中不存在,但它不是一个有用的信息,我确实理解它的意思,但我对如何接近解决方案感到非常困惑。
让你知道,我确实事先创建了变量,我把它们贴在下面:
public struct prdType
{
public string bCode;
public string PCode;
public string Desc;
public Int16 Pack;
public string Unit;
public string VATCode;
public float VATRate;
// Stored in pence
public long Cost;
public long Sell;
public long Stock;
public float AWS;
public long OnOrder;
public long OrderQty;
public long LabelQty;
public string Restriction;
public long MinStock;
public string PromoCode;
}
非常感谢你的帮助。谢谢。编辑:s = sData.Split("|");它说:"最好的重载方法匹配字符串。Split(params char[])有一些无效参数。它还说参数不能转换为char。什么好主意吗?
与其使用旧的VB方法,我建议一直使用c#方法。
string[] s = sData.Split('|');
Strings.Left
的使用并不明显。由于您已经分割了这条线,因此您将完整地拥有分割线的每个元素。如果你想只取n
的第一个字符,你可以这样做,但是在c#中没有内置的等价的Strings.Left
。
对于不同类型的元素,您可以使用Convert.ToX
:
PRD.Pack = Convert.ToInt16(s[3]));
PRD.VATRate = Convert.ToSingle(s[6]));
PRD.Cost = Convert.ToInt64(s[7]);
以此类推。注意,float
使用的是Convert.ToSingle
,而不是Convert.ToFloat
。
根据@Raphael的评论,Convert.ToX
不是Conversion.Val()
的直接替代品,但只要字符串是严格的数字,你就可以得到正确的类型。
这些方法来自Microsoft.VisualBasic
命名空间。只有当你知道自己在做什么时才应该使用它(参见Tim对这个答案的评论)。
我不建议你使用这些方法。
它们在c#中是等价的方法(或者它们很容易实现)。
这样的字符串。例如,分割(因此您可以输入var s = sData.Split('|');
)
一种相当于String.Left
不建议这样做,但无论如何:
如果你想绝对使用它们,你应该:
添加
Microsoft.VisualBasic
程序集的引用(右键单击项目的引用,你应该在框架库中找到它)在你的代码的顶部添加right using:
using Microfost.VisualBasic;
你需要做s = sData.Split("|");