假设我有一个字符串:
"34234234d124"
我想要得到这个字符串的最后四个字符,这个字符串是“d124”。我可以使用SubString,但它需要几行代码,包括命名一个变量。
是否有可能在c#的一个表达式中得到这个结果?
假设我有一个字符串:
"34234234d124"
我想要得到这个字符串的最后四个字符,这个字符串是“d124”。我可以使用SubString,但它需要几行代码,包括命名一个变量。
是否有可能在c#的一个表达式中得到这个结果?
当前回答
假设你想要一个距离最后一个字符10个字符的字符串之间的字符串,你只需要3个字符。
我们写入StreamSelected = "rtsp://72.142.0.230:80/ smile - chan -273/ 4cif -273.stream"
在上面,我需要提取我将在数据库查询中使用的“273”
//find the length of the string
int streamLen=StreamSelected.Length;
//now remove all characters except the last 10 characters
string streamLessTen = StreamSelected.Remove(0,(streamLen - 10));
//extract the 3 characters using substring starting from index 0
//show Result is a TextBox (txtStreamSubs) with
txtStreamSubs.Text = streamLessTen.Substring(0, 3);
其他回答
string var = "12345678";
var = var[^4..];
// var = "5678"
这是一个索引运算符,字面意思是“从end(^4)到end(..)取最后四个字符”
你可以使用扩展方法:
public static class StringExtension
{
public static string GetLast(this string source, int tail_length)
{
if(tail_length >= source.Length)
return source;
return source.Substring(source.Length - tail_length);
}
}
然后调用:
string mystring = "34234234d124";
string res = mystring.GetLast(4);
mystring.Substring(Math.Max(0, mystring.Length - 4)); //how many lines is this?
如果你确定字符串的长度至少是4,那么它甚至更短:
mystring.Substring(mystring.Length - 4);
下面是另一个应该不会太糟糕的替代方案(因为延迟执行):
新的字符串(mystring.Reverse (), (4) .Reverse () .ToArray ());
虽然mystring.Last(4)的扩展方法显然是最干净的解决方案,尽管要做更多的工作。
public static string Last(this string source, int tailLength)
{
return tailLength >= source.Length ? source : source[^tailLength..];
}