在vb.net中从长度可变的字符串中提取最后10个字符

在vb.net中从长度可变的字符串中提取最后10个字符,.net,vb.net,.net,Vb.net,我有以下几句话: i have a river he is liar great hello miss there was a river in this area 现在我想提取最后10个字符并得到这个结果 ve a river he is liar great hello miss this area 我已经试着用这个来达到预期的效果 mystring.Substring(mystring.Length - 10) 上述代码适用于长度大于9的字符串,但不适用于great如何使用最少

我有以下几句话:

i have a river  
he is liar
great
hello miss
there was a river in this area
现在我想提取最后10个字符并得到这个结果

ve a river
he is liar
great
hello miss
 this area
我已经试着用这个来达到预期的效果

mystring.Substring(mystring.Length - 10)

上述代码适用于长度大于9的字符串,但不适用于
great
如何使用最少的vb.net代码行来克服此问题?

您需要使用Math.Min来限制子字符串,以便它从字符串中获取10个或尽可能多的子字符串

mystring.Substring(mystring.Length - Math.Min(10, mystring.Length))

您可以反转字符串(将其转换为字符数组),从开始处提取10个字符,然后将其反转并通过加入数组转换为字符串

String.Join("", mystring.Reverse().Take(10).Reverse())
他们会做你想做的事

Dim ss = {"i have a river", "he is liar", "great", "hello miss", "there was a river in this area"}
For Each s In ss
    Console.WriteLine(Strings.Right(s, 10))
Next
产出:

ve a river
he is liar
great
hello miss
 this area
我假设最后一个字符串开头缺少空格是问题中的一个转录错误

Microsoft.VisualBasic.Strings.Right(mystring, 10)
我发现了另一个简单但有效的解决方案:

mystring.Substring(数学最大值(0,mystring.Length-10))


如果mystring.Length()大于10,那么可以使用2个数字的min()函数吗?i、 e.min(10,mystring.Length)@boethius-是的,它可以工作。可能重复的可能重复的