VB InStr等效于c#

时间:2015-08-10 13:12:01

标签: c# vb.net

我不确定为什么会得到0的结果,这是a的正确值

我有VB

Dim searched As String = "<results>" & vbCrLf & "<field name=\""FID\""/>" & vbCrLf & "<field name=\""StartFID\""/>" & vbCrLf & "<field name=\""Vertex1\""/>" & vbCrLf & "<field name=\""Vertex2\""/>" & vbCrLf & "<field name=\""Slope\""/>" & vbCrLf & ""

Dim sought As String = "<rs FID=\""87\"" StartFID=\""87\"" Vertex1=\""29\"" Vertex2=\""30\"" Slope=\""-1\""/>"

Dim a As Integer = InStr(searched, sought)

我想做的是,在转换为c#时获得a == 0的相同结果。

我试过了

int a = String.Compare(searched, sought);
int a = String.IndexOf(searched, sought);
int a = String.Equals(searched, sought);

7 个答案:

答案 0 :(得分:3)

C#中的字符串是零索引的。如果a.IndexOf(b)返回0,则字符b中的字符a位于0位置。

如果搜索的字符串不在输入中,IndexOf()会返回-1

答案 1 :(得分:3)

InStrIndexOf行为之间的一个区别是InStr在找不到字符串时返回零,而IndexOf返回-1。使用IndexOf是在C#中搜索子字符串的惯用方法,以及在您的情况下使用的正确方法。

如果您想直接使用InStr,可以通过引用Microsoft.VisualBasic程序集,然后调用InStr作为Strings类的静态方法来执行此操作:

int a = Strings.InStr(searched, sought);

答案 2 :(得分:0)

String.IndexOf应该有效,但如果您真的想使用InStr,您仍然可以使用它。只需添加对Microsoft.VisualBasic.dll的引用,并使用Microsoft.VisualBasic添加&#34;&#34;在文件顶部,您可以使用Strings.InStr: 与Strings.InStr(searched, sought)

一样

答案 3 :(得分:0)

您可以使用searched.Contains(sought)

答案 4 :(得分:0)

这三种方法都是出于不同目的而不尽相同。这就是为什么他们有不同的名字..

int a = String.IndexOf(searched, sought);

这是您应该使用的方法,并且正是出于此目的。 或者,您可以使用string.Contains()

int a = String.Compare(searched, sought);

比较两个指定的String对象,忽略或尊重它们的大小写,并返回一个整数,指示它们在排序顺序中的相对位置。

bool a = String.Equals(searched, sought);

确定两个字符串的相等性。

答案 5 :(得分:0)

作品......谢谢Carsten

int b = searched.IndexOf(sought);

b = 0

我看到我现在遇到的问题...当我将字符串移动到计算字符串的变量时,我得到了错误。我不确定我是否正确使用了InStr。

答案 6 :(得分:0)

只需使用IndexOf()+ 1即可返回0而不是-1

int a = searched.IndexOf(sought)+1;

对我有用,希望对您有帮助