c# - 这是使用 c# 在字符串中的下划线 (_) 之前跳过字符的最佳方法

标签 c# string filtering

在使用 C# 的字符串中,在下划线 _ 之前跳过字符的最佳方法是什么?

例如:情况1 字符串包含_

string s="abc_defg" 

我想将 defg 转换为另一个字符串

案例2

有时字符串不包含 _ 。那时我需要得到所有的字符串

例如。

s="defg"

在这两种情况下,我都想得到“defg”。仅当字符串中有下划线时才应用过滤。我该怎么做

最佳答案

string s="abc_defg";
int ix = s.IndexOf('_');
s = ix != -1 ? s.Substring(ix + 1) : s;

这里用三目运算符没什么用,最好这样写:

s = s.Substring(ix + 1);

直接使用 Substring 可能针对 case index == 0 优化的事实

这是你想要的吗?

但是有人建议使用 LINQ 大炮,所以

var temp = s.SkipWhile(p => p != '_').Skip(1);
s = temp.Any() ? new string(temp.ToArray()) : s;

在 .NET 4.0 中有一个新的 string.Concat 方法。

s = temp.Any() ? string.Concat(temp) : s;

(请注意,通常 LINQ 方式更慢且阅读起来更复杂)

我将添加 ultrakill:正则表达式!!!有一种观点认为任何事情都可以用正则表达式或 jQuery 来完成! :-)

var rx = new Regex("(?:[^_]*_)?(.*)", RegexOptions.Singleline);
var res = rx.Match(s).Groups[1].Value;

我什至不会尝试向任何人解释这个野兽,所以不要问。这毫无用处。 (正则表达式和询问:-))

关于c# - 这是使用 c# 在字符串中的下划线 (_) 之前跳过字符的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7672937/

相关文章:

c# - 自动映射自定义通用类型 - 如何?

java - line.split (",")[1] 是什么意思 [Java]?

python - 连接字符串 + 路径时停产

java - Java 测验程序中正确答案识别错误

javascript - ExtJS 有条件地渲染输入字段

c# - Azure C# v2 函数 : Entire table processed instead of portion of table

c# - 在正则表达式中使用捷克字符

c# - 如何在 C# 中使用 XmlDocument 和 XmlNode 修改现有的 XML 文件

pandas - 属性错误 : 'float' object has no attribute 'isnumeric'

matlab - 查找带通滤波器的频率响应