C#Substring和ToUpper

时间:2009-01-14 00:25:43

标签: c# substring

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

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

由于 ç

5 个答案:

答案 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;