3

我正在使用 substring 和 IndexOf 来定位字符串中的值,但如果下面的字符串 (strOldValue) 包含不同情况下的任何字符串,我的代码将不起作用。因此,如果 strOldValue 包含 Test 或 TEST 那么我的子字符串将失败。在这种情况下如何添加 ToUpper?原谅我的无知我是.Net 的新手。

String strValue = strOldValue.Substring(strOldValue.IndexOf(@"test"));

谢谢 C

4

5 回答 5

16

使用 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获取完整文档)。

于 2009-01-14T00:29:24.893 回答
3
String strValue 
    = strOldValue.Substring(strOldValue.ToUpper().IndexOf(@"TEST"));

注意:我直接回答了这个问题(“在这种情况下我将如何添加 ToUpper?”)。

这不是我编写不区分大小写的子字符串的方式。

divo/TheSoftwareJedi 的答案显然更胜一筹。

于 2009-01-14T00:28:14.380 回答
2

使用String.IndexOf(String,StringComparison)可能是最好的答案。在某个地方使用ToUpper()只会创建一个额外的 String 对象,该对象必须被垃圾收集器销毁。几乎所有 String 比较方法都有一个重载,它接受一个指示如何进行比较的标志。

于 2009-04-12T15:46:17.063 回答
1
strValue.Substring(strValue.IndexOf("TEST", StringComparison.OrdinalIgnoreCase));
于 2009-01-14T00:31:23.453 回答
0

作为一个正则表达式爱好者,我会使用以下代码:

String strValue = new Regex("test.*",
       RegexOptions.IgnoreCase).Match(strOldValue).Value;
于 2009-01-14T00:43:05.443 回答