Tob*_*bon 2 c# linq string optimization
我正在尝试删除字符 '.' 来自除最后一次出现之外的字符串;例如字符串
12.34.56.78
Run Code Online (Sandbox Code Playgroud)
应该成为
123456.78
Run Code Online (Sandbox Code Playgroud)
我正在使用这个循环:
while (value != null && value.Count(c => c == '.') > 1)
{
value = value.Substring(0, value.IndexOf('.')) + value.Substring(value.IndexOf('.') + 1);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更简洁的方法(也许使用 linq?)来做到这一点而无需显式循环?
(我知道有一个非常相似的问题,但是是关于 perl 的,事情完全不同)
int lastIndex = value.LastIndexOf('.');
if (lastIndex > 0)
{
value = value.Substring(0, lastIndex).Replace(".", "")
+ value.Substring(lastIndex);
}
Run Code Online (Sandbox Code Playgroud)
也许是方法和 Linq 的混合string:
string str = "12.34.56.78";
Char replaceChar = '.';
int lastIndex = str.LastIndexOf(replaceChar);
if (lastIndex != -1)
{
IEnumerable<Char> chars = str
.Where((c, i) => c != replaceChar || i == lastIndex);
str = new string(chars.ToArray());
}
Run Code Online (Sandbox Code Playgroud)