子串问题

时间:2013-12-17 15:30:58

标签: c# substring indexof

我有以下代码:

sDocType = pqReq.Substring(0, pqReq.IndexOf(@"\t"));

字符串 pqReq 如下所示:“CSTrlsEN \ t001 \ t \\ sgprt \ Projects2 \ t001 \ tCSTrl”。但即使我可以清楚地看到字符串中的t\pqReq.IndexOf(@"\t")返回-1,因此会抛出错误。

这样做的正确方法是什么?我不想将字符串 pqReq 拆分为以后的代码。

2 个答案:

答案 0 :(得分:2)

使用\\t代替\t\t被视为制表符。 sDocType = pqReq.Substring(0,pqReq.IndexOf(@“\ t”));

编辑:

由于\t,我没有注意到@是文字的。但是你的输入字符串是文字字符串吗?如果没有,请在值@之前放置pqReq

string pqReq = @"CSTrlsEN\t001\t\\sgprt\Projects2\t001\tCSTrl";
int i = pqReq.IndexOf(@"\t");
//i = 8

答案 1 :(得分:2)

我无法重现此问题。以下代码(.NET Fiddle here):

var pqReq=@"CSTrlsEN\t001\t\\sgprt\Projects2\t001\tCSTrl";
var idx=pqReq.IndexOf(@"\t");
Console.WriteLine(idx);
var sDocType = pqReq.Substring(0, idx);
Console.WriteLine(sDocType);

产生

8
CSTrlsEN

您是否忘记使用@前缀pqReq?