[英]remove chars in string except last
我想删除这个字符''。 从最后一次出现以外的字符串; 例如字符串
12.34.56.78
应该成为
123456.78
我正在使用这个循环:
while (value != null && value.Count(c => c == '.') > 1)
{
value = value.Substring(0, value.IndexOf('.')) + value.Substring(value.IndexOf('.') + 1);
}
我想知道是否有一种更清洁的方式(也许使用linq?)来做一个明确的循环?
(我知道有一个非常相似的问题,但关于perl和事情是完全不同的)
int lastIndex = value.LastIndexOf('.');
if (lastIndex > 0)
{
value = value.Substring(0, lastIndex).Replace(".", "")
+ value.Substring(lastIndex);
}
也许是string
方法和Linq的混合:
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());
}
我会这样做:
要么
var splitResult = v.Split(new char[] { '.' }).ToList();
var lastSplit = splitResult.Last();
splitResult.RemoveAt(splitResult.Count - 1);
var output = string.Join("", splitResult) + "." + lastSplit;
我会这样做的。 最好的方式并不总是最短的方式。
这样的事情应该可以解决问题。 它是否“好”是另一回事。 另请注意,没有错误检查。 可能要检查null或空字符串,并且字符串至少有一个"."
在里面。
string numbers = "12.34.56.78";
var parts = String.Split(new char [] {'.'});
string newNumbers = String.Join("",parts.Take(parts.Length-1)
.Concat(".")
.Concat(parts.Last());
我没有声称这对于长字符串会有很好的性能特征,但它确实使用了Linq ;-)
你不必使用循环:
//string val = "12345678";
string val = "12.34.56.78";
string ret = val;
int index = val.LastIndexOf(".");
if (index >= 0)
{
ret = val.Substring(0, index).Replace(".", "") + val.Substring(index);
}
Debug.WriteLine(ret);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.