如何得到字符串的前五个字符

我已经读过这个字符串的 获得第一个字符的问题。有没有一种方法可以从 C # 中的字符串中获得第一个 n 个字符?

590255 次浏览

你可以这样使用 数不胜数,拿着:

char[] array = yourStringVariable.Take(5).ToArray();

或者你可以使用 字符串,子字符串

string str = yourStringVariable.Substring(0,5);

请记住,如果字符串的长度小于所需的字符,String.Substring可能会抛出异常。

如果您希望以字符串形式返回结果,那么可以使用:

  • 使用字符串构造函数和 LINQ 的 Take

    string firstFivChar = new string(yourStringVariable.Take(5).ToArray());
    

The plus with the approach is not checking for length before hand.

  • The other way is to use String.Substring with error checking

like:

string firstFivCharWithSubString =
!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5
? yourStringVariable.Substring(0, 5)
: yourStringVariable;

你可以使用 子字符串(int startIndex,int length)

string result = str.Substring(0,5);

子字符串从指定的字符位置开始,并具有 指定的长度。此方法不修改当前 相反,它返回一个具有长度字符的新字符串 从当前字符串的 startIndex 位置开始, MSDN

如果源字符串小于5个字符会怎样?使用上面的方法会得到异常。我们可以使用条件来检查字符串中的字符数是否超过5,然后通过 Substring 获得前5个字符。注意,我已经将源字符串赋给 firstFiveChar 变量。如果字符小于5,则 firstFiveChar 不会更改,因此不需要 else 部分。

string firstFiveChar = str;
If(!String.IsNullOrWhiteSpace(yourStringVariable) && yourStringVariable.Length >= 5)
firstFiveChar = yourStringVariable.Substring(0, 5);
string str = "GoodMorning"


string strModified = str.Substring(0,5);

请试试:

yourString.Substring(0, 5);

检查 C # Substring字符串。子字符串方法

.Substring(,)的问题在于,您需要确保给定的字符串至少具有要求的字符数的长度,否则将抛出 ArgumentOutOfRangeException

解决方案1(使用‘ Substring’) :

var firstFive = stringValue != null && stringValue.Length > 5 ?
stringValue.Substring(0, 5) :
stringValue;

使用 .Substring(的缺点是需要检查给定字符串的长度。

解决方案2(使用‘ Take’) :

var firstFive = stringValue != null ?
string.Join("", stringValue.Take(5)) :
null;

使用 “拿走”将防止您需要检查给定字符串的长度。

下面是一个扩展方法,它检查一个字符串是否比所需要的大,并将字符串缩短到定义的最大字符量,然后附加“ ...”。

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;
}
}

没有人提到如何在使用 Substring()时进行适当的检查,所以我想对此作出贡献。

如果您不想使用 Linq并使用 Substring(),那么您必须确保您的字符串大于 Substring()函数的第二个参数(长度)。

假设你需要前5个字符,你应该对它们进行适当的检查,像这样:

string title = "love"; // 15 characters
var firstFiveChars = title.Length <= 5 ? title : title.Substring(0, 5);


// firstFiveChars: "love" (4 characters)

如果没有这个检查,Substring()函数就会抛出一个异常,因为它会迭代不存在的字母。

我想你已经明白了。

我不知道为什么会有人提到这个。 但这是实现这一目标的最简捷的方法。

string str = yourString.Remove(n);

n-所需的字符数

例子

var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141

试试以下代码

 string Name = "Abhishek";
string firstfour = Name.Substring(0, 4);
Response.Write(firstfour);

我已经尝试了以上的答案,我认为最好的是这一个

@item.First_Name.Substring(0,1)

在这里我可以得到字符串的第一个字母

附加五个空格字符,然后删除前五个并修剪结果。附加的空格数应该与正在切割的空格数相匹配。一定要在 .Substring(0,X)之前加上括号,否则什么都不会增加。

string str = (yourStringVariable + "    ").Substring(0,5).Trim();

有了这个技巧,你就不必担心其他答案中提到的 ArgumentOutOfRangeException了。

我用:

var firstFive = stringValue?.Substring(0, stringValue.Length >= 5 ? 5 : customAlias.Length);

或者,如果你也想检查空白(而不是只检查空白) :

var firstFive = !String.IsNullOrWhiteSpace(stringValue) && stringValue.Length >= 5 ? stringValue.Substring(0, 5) : stringValue

或者你可以用 ToCharArray ()
它接受 int startindexint length作为参数,并返回一个 char[]

new string(stringValue.ToCharArray(0,5))

您仍然需要确保字符串具有适当的长度,否则它将抛出 ArgumentOutOfRangeException

从 C # 中的字符串中获取前 n 个字符

String yourstring="Some Text";
String first_n_Number_of_Characters=yourstring.Substring(0,n);

使用 PadRight 函数防止字符串太短,抓取需要的内容,然后在一个语句中从末尾修剪空格。

strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();

如果我们只想从任何字段的前5个字符,那么这可以通过左属性实现

Vessel = f.Vessel !=null ? f.Vessel.Left(5) : ""

当 str 小于5时,请尝试下面的代码。

string strModified = str.Substring(0,str.Length>5?5:str.Length);

C # 8.0中,您可以得到字符串的前五个字符,如下所示

string str = data[0..5];

这里有一些关于 指数和范围的更多信息

提醒一下,在 C # 8.0: 靶场操作员中有一种新的实现方法

微软文档

或者我喜欢叫他们,熊猫切片。

老办法:

string newString = oldstring.Substring(0, 5);

新方法:

string newString = oldstring[..5];

乍看之下,这似乎是对较短代码的可读性的一种很糟糕的权衡,但是这个新特性为您提供了

  1. 用于切片数组(也就是字符串)的标准语法
  2. 像这样很酷的东西:

    Var slice1 = list [2..^ 3] ;//列表[范围。创建(2,索引。CreateFromEnd (3)]

    Var slice2 = list [..^ 3] ;//list [ Range.ToEnd (Index.CreateFromEnd (3)]

    Var slice3 = list [2..]//列表[范围。开始(2)]

    Var slice4 = list [..]//列表[范围。全部]

这就是你在2020年的做法:

var s = "ABCDEFGH";
var first5 = s.AsSpan(0, 5);

时间跨度直接指向字符串的内存,避免分配临时字符串。当然,任何要求 string的后续方法都需要进行转换:

Console.WriteLine(first5.ToString());

尽管如此,现在许多 .NET API 允许跨度。如果可能的话,坚持使用它们!

注意: 如果针对 .NET Framework添加对 系统,内存包的引用,但不要期望同样出色的性能。

这是我正在使用的,它没有问题的字符串少于必需的字符

private string TakeFirstCharacters(string input, int characterAmount)
{
return input?.Substring(0, Math.Min(input.Length, characterAmount));
}

在 C # 8中可以使用 靶场管理员。为了避免原始字符串短于所需长度时出现异常,可以使用 Math.Min:

string newString = oldstring[..Math.Min(oldstring.Length, 5)];

当然,如果您知道原来的字符串更长,您可以优化:

string newString = oldstring[..5];