C#的Substring和ToUpper函数

3

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

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

感谢C。
5个回答

17

使用 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)。


我把我的答案和你的合并了。如果你不喜欢,就回滚吧。我认为我们合并后的答案是最好的。 - TheSoftwareJedi
我进行了编辑以避免水平滚动条 - 如果您不喜欢,请回滚。 - Charles Bretana

3
String strValue 
    = strOldValue.Substring(strOldValue.ToUpper().IndexOf(@"TEST"));

注意:我直接回答问题(“在这种情况下,我该如何添加ToUpper?”)。
这不是我编写大小写不敏感子字符串的代码方式。
divo/TheSoftwareJedi的答案显然更优。

注意:我直接回答问题(“在这种情况下,我该如何添加 ToUpper?”)。这不是我编写不区分大小写的子字符串的方式。 - Portman
也许提供一下代码示例会有所帮助。有时候新手的问题并不总是问得很完美,你懂的 ;) - TheSoftwareJedi

2
使用 String.IndexOf(String,StringComparison) 可能是最好的答案。在其中使用 ToUpper() 会创建一个额外的 String 对象,需要由垃圾回收器销毁。几乎所有的 String 比较方法都有一个重载,接受一个标志,指明如何进行比较。

1
strValue.Substring(strValue.IndexOf("TEST", StringComparison.OrdinalIgnoreCase));

0
作为一个正则表达式的粉丝,我会使用以下代码:
String strValue = new Regex("test.*",
       RegexOptions.IgnoreCase).Match(strOldValue).Value;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接