关于 .net:从 VB6 转换为 C# 字符串操作

Conversion from VB6 to C# string manipulation

VB6代码如下:

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

我尝试在将其更改为 c# 时保留逻辑,但似乎不起作用。

1
2
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>_fiddlein

此外,在末尾编辑 + 7 时,它似乎并没有消除串联之间的下划线。
但相反我得到: 111111o>_fiddlein

相关讨论

  • tablename.Length-tablename.Length?
  • 是的,我知道这不是必需的,我只是按照建议使用被认为是等效的东西。
  • 例如, tablename 包含什么?
  • 如果我们能看到一个正在解析的例子,会更容易提供帮助
  • 表名 = t_<idNo>_fiddlein

我假设如下:

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

那么应该这样做:

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

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


以上是关于 .net:从 VB6 转换为 C# 字符串操作的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>