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

本文关键字:五个 字符 何获得 字符串 | 更新日期: 2023-09-27 18:08:39

我已经阅读了这个问题,以获得字符串的第一个字符。是否有一种方法可以从c#字符串中获得前n个字符?

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

可以使用Enumerable。如:

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

或者您可以使用String.Substring。

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

请记住,String.Substring可能在字符串长度小于所需字符的情况下抛出异常。

如果你想以字符串的形式返回结果,那么你可以使用:

  • 使用String构造函数和LINQ的Take

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

这个方法的加号是不事先检查长度。

  • 另一种方法是使用String.Substring与错误检查

:

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

请尝试:

yourString.Substring(0, 5);

检查c#子字符串,字符串。Substring Method

您可以使用Substring(int startIndex, int length)

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

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

如果源字符串少于5个字符怎么办?使用上述方法会得到异常。我们可以设置条件来检查字符串中的字符数是否大于5,然后通过Substring获取前5个字符。注意,我已将源字符串分配给firstFiveChar变量。如果字符数小于5,则第一个fivechar不改变,因此不需要else部分。

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

没有人提到如何在使用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()函数会抛出异常,因为它会遍历不存在的字母。

我想你明白了…

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

使用'Take'可以避免检查给定字符串的长度。

提醒一下,在c# 8.0中有一种新的方法可以做到这一点:范围操作符

微软文档

或者我喜欢叫它们"熊猫片"。

老方法:

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

新方法:

string newString = oldstring[..5];

乍一看,对于较短的代码来说,这似乎是一个相当糟糕的权衡,但是新特性给了你

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

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

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

    var slice3 = list[2..];//列表(Range.FromStart (2)]

    var slice4 = list[..];//列表范围。所有]

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

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

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

string str = yourString.Remove(n);

n -您需要的字符数

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

添加五个空白字符,然后截断前五个字符并修剪结果。添加的空格数应该与要切割的空格数相匹配。请确保在.Substring(0,X)之前包含圆括号,否则您将不添加任何内容。

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

使用这种技术,您将不必担心在其他答案中提到的ArgumentOutOfRangeException

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

2020年你应该这样做:

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

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

Console.WriteLine(first5.ToString());

虽然,这些天许多.NET api允许跨度。如果可能的话,坚持下去!

注:如果目标为.NET Framework,则添加对System的引用。内存封装,但不要期望同样出色的性能。

在c# 8.0中,您可以获得字符串的前五个字符,如

string str = data[0..5];

这里有一些关于索引和范围的更多信息

在c#

中从字符串中获取前n个字符
String 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;
    }
}

请在str小于5时尝试此代码。

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

在c# 8中可以使用范围运算符。为了避免原始字符串短于期望长度的异常,您可以使用Math.Min:

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

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

string newString = oldstring[..5];

我使用:

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

或其他选项,如果你想检查空白(而不仅仅是Null):

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

或者您可以使用String.ToCharArray()。
它接受int startindexint 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));
}

如果我们只需要任何字段的前5个字符,那么这可以通过Left Attribute

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

试试下面的代码

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

我试过上面的答案,我认为最好的是这个

@item.First_Name.Substring(0,1)

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