我看过这个问题以获得字符串的第一个字符。在C#中有没有一种方法可以获取字符串的前n个字符?
以下是2020年的做法:
var s = "ABCDEFGH";
var first5 = s.AsSpan(0, 5);
Span<T> 直接指向字符串的内存,避免分配临时字符串。当然,任何后续要求 string
的方法都需要进行转换:
Console.WriteLine(first5.ToString());
现在许多 .NET API 允许使用 Spans,如果可能的话请尽量使用它们。
注意:如果目标平台是 .NET Framework,请添加对 System.Memory 包的引用,但不要期望获得相同的出色性能。
AsSpan
之前,我们确实需要查看 .net 版本。 - Zaheer.NET 5
或至少.NET Core
。无论如何,如果您添加一些依赖项,它也可以在.NET Framework 4.5+
中工作。 - l33tConsole.WriteLine
不支持Span<T>
,但许多其他.NET
API支持。 - l33ts
的长度小于5个字符(在上面的示例中),AsSpan()
会抛出ArgumentOutOfRangeException
异常。检查长度可能是值得的。 - armyString yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);
public static class StringExtensions
{
public static string Ellipsis(this string s, int charsToDisplay)
{
if (!string.IsNullOrWhiteSpace(s))
return s.Length <= charsToDisplay ? s : new string(s.Take(charsToDisplay).ToArray()) + "...";
return String.Empty;
}
}
Math.Min
:string newString = oldstring[..Math.Min(oldstring.Length, 5)];
string newString = oldstring[..5];
当str小于5时,请尝试使用以下代码。
最初的回答:
string strModified = str.Substring(0,str.Length>5?5:str.Length);
var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);
或者,如果您想检查空格(而不仅仅是空值)的替代方案:
var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue
int startindex
和int length
作为参数,并返回一个char[]
。new string(stringValue.ToCharArray(0,5))
你仍需要确保字符串具有适当的长度,否则它将抛出 ArgumentOutOfRangeException
这是我正在使用的,对于少于所需字符的字符串没有问题
private string TakeFirstCharacters(string input, int characterAmount)
{
return input?.Substring(0, Math.Min(input.Length, characterAmount));
}
Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""
char
**,而你问的是关于 字符。它们不是同一回事。和
是我昨天需要使用的两个字符,但由于我使用的 C# 软件编写者不知道char
和字符之间的区别,所以失败了。不要陷入这个陷阱! - hippietrail