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