我不知道为什么我得到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);
C#中的字符串是零索引的。如果a.IndexOf(b)
返回0
,则字符串b
出现在a
位置的字符串0
中。
如果搜索的字符串不在输入中,则IndexOf()
返回-1
。
InStr
和IndexOf
的行为之间的一个区别是,当找不到字符串时,InStr
返回零,而IndexOf
返回-1。使用IndexOf
是在C#中搜索子字符串的惯用方法,以及在您的情况下使用的正确方法。
如果你想直接使用InStr
,你可以通过引用Microsoft.VisualBasic
程序集,然后调用InStr
作为Strings
类的静态方法来实现:
int a = Strings.InStr(searched, sought);
String.IndexOf
应该工作,但如果你真的想使用InStr,你仍然可以做到。只需添加对Microsoft.VisualBasic.dll的引用,并添加“using Microsoft.VisualBasic;”在你的文件的顶部,你可以使用Strings.InStr
:像Strings.InStr(searched, sought)
这三种方法都是出于不同的目的,并不相同。这就是为什么他们有不同的名字..
int a = String.IndexOf(searched, sought);
这是您应该使用的方法,并且正是为此目的。或者你可以使用string.Contains()
。
int a = String.Compare(searched, sought);
比较两个指定的String对象,忽略或尊重它们的大小写,并返回一个整数,指示它们在排序顺序中的相对位置。
bool a = String.Equals(searched, sought);
确定两个字符串的相等性。
作品......谢谢Carsten
int b = searched.IndexOf(sought);
b = 0
我看到了现在的问题...当我将字符串移动到计算字符串的变量时,我得到了错误。我不确定我是否正确使用了InStr。
你可以使用searched.Contains(sought)
只需使用IndexOf()+ 1即可返回0而不是-1
int a = searched.IndexOf(sought)+1;
它对我有帮助