我正在使用substring和IndexOf来定位字符串中的值,但如果下面的字符串(strOldValue)包含不同情况下的任何字符串,则我的代码不起作用。因此,如果strOldValue包含Test或TEST,那么我的子串会失败。如何在这种情况下添加ToUpper?原谅我的无知我是.Net的新手。
String strValue = strOldValue.Substring(strOldValue.IndexOf(@"test"));
由于 ç
答案 0 :(得分:16)
使用ToUpper,可以这样做:
String strValue = strOldValue.Substring(
strOldValue.ToUpper().IndexOf(@"TEST"));
但是,最简单的方法是指定比较不应区分大小写:
String strValue = strOldValue.Substring(strOldValue.IndexOf(@"TEST",
StringComparison.CurrentCultureIgnoreCase));
IndexOf 方法的第二个 comparisonType 参数指定如何搜索value参数:使用当前或不变文化,使用区分大小写或不区分大小写搜索,或使用单词或序数比较规则(有关完整文档,请参阅http://msdn.microsoft.com/en-us/library/ms224425.aspx)。
答案 1 :(得分:3)
String strValue
= strOldValue.Substring(strOldValue.ToUpper().IndexOf(@"TEST"));
注意:我正在直接回答问题(“我将如何在此场景中添加ToUpper?”)。
这不是我如何编写不区分大小写的子字符串。
divo / TheSoftwareJedi的答案明显优越。
答案 2 :(得分:2)
使用String.IndexOf(String,StringComparison)
可能是最好的答案。在那里使用ToUpper()
只是创建一个额外的String对象,必须由垃圾收集器销毁。几乎所有的String比较方法都有一个重载,它接受一个标志,说明如何进行比较。
答案 3 :(得分:1)
strValue.Substring(strValue.IndexOf("TEST", StringComparison.OrdinalIgnoreCase));
答案 4 :(得分:0)
作为正则表达式粉丝,我会使用以下代码:
String strValue = new Regex("test.*",
RegexOptions.IgnoreCase).Match(strOldValue).Value;