从VB6转换为C#字符串操作

时间:2013-12-11 14:35:52

标签: c# .net vb6

VB6代码如下:

record = Collection & Right(TableName, Len(TableName) - (InStr(1, TableName, "_<idNo>_") + 7))

我在尝试将其更改为c#时保持逻辑,但似乎无法正常工作。

collection = 111111   
Record = collection + tablename.Substring(tablename.Length -  tablename.Length - tablename.IndexOf("_<idNo>_", 1) + 7);

(VB6)InStr是(C#)indexOf
请参阅:http://bytes.com/topic/net/answers/108174-c-equilivant-instr

(VB6)Right是(C#)Substring我正在遵循他们如何改变彼此的模板。 请参阅:http://social.msdn.microsoft.com/Forums/vstudio/en-US/9598905f-912f-4ea7-b954-eb2f48328ce5/c-equivalent-for-right-of-vb

期待:111111fiddlein

获取:111111o&gt; _fiddlein

此外,在最后编辑+ 7时,它似乎不会消除串联之间的下划线。
但相反,我得到:111111o&gt; _fiddlein

2 个答案:

答案 0 :(得分:3)

我假设以下内容:

string collection = "111111";
string tablename = "t_<idNo>_fiddlein"; // anything before '<idNo>_' will not be observed

然后这应该这样做:

string result = collection + tablename.Substring(tablename.IndexOf("_<idNo>_") + 8);

答案 1 :(得分:2)

您的问题是VB6 InStr函数是基于1的,而C#IndexOf函数是基于0的。