如何获取String的前五个字符

时间:2013-04-11 06:22:18

标签: c# asp.net string char

我已阅读该字符串的question to get first char 。有没有办法从C#中的字符串中获取前n个字符?

20 个答案:

答案 0 :(得分:183)

您可以使用Enumerable.Take之类的:

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

或者您可以使用String.Substring

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

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

如果您想以字符串形式返回结果,可以使用:

  • 使用字符串构造函数和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;

答案 1 :(得分:43)

请尝试:

yourString.Substring(0, 5);

检查C# SubstringString.Substring Method

答案 2 :(得分:32)

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

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

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

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

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

答案 3 :(得分:23)

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

我想你明白了......

答案 4 :(得分:16)

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

解决方案1(使用&#39;子串&#39;):

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

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

解决方案2(使用&#39; Take&#39;):

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

使用&#39; Take&#39; 可以防止您需要检查给定字符串的长度。

答案 5 :(得分:11)

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

string str = yourString.Remove(n);

n - 您需要的字符数

实施例

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

答案 6 :(得分:8)

请注意,在C#8.0中,有一种新方法可以做到这一点:范围运算符

Microsoft Docs

或者我喜欢称呼它们为熊猫切片。

旧方法:

# For example:
# If t1 = (* (+ 20 1) (- 10 8))
# Then when I call 'swap t1' I should get (* (- 8 10) (+ 1 20)) but I get (* (- 10 8) (+ 20 1))

#Here is my code:
data Tree =
     TInt Integer
   | TOp String Tree Tree

t1 = TOp "*" (TOp "+" (TInt 20) (TInt 1))
             (TOp "-" (TInt 10) (TInt 8))

swap :: Tree -> Tree
swap (TInt i) = TInt i
swap (TOp s first second) = TOp s second first

新方法:

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

乍看之下,对于较短的代码来说,在一些可读性上似乎是一个很差的折衷,但是新功能为您提供了

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

    var slice1 = list [2 .. ^ 3]; // list [Range.Create(2,Index.CreateFromEnd(3))]

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

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

    var slice4 = list [..]; //列表[Range.All]

答案 7 :(得分:7)

附加五个空格字符,然后剪切前五个字符并修剪结果。您追加的空格数量应与您要追加的数量相匹配。请确保在.Substring(0,X)之前加上括号,否则您将不附加任何内容。

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

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

答案 8 :(得分:6)

string str = "GoodMorning"

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

答案 9 :(得分:4)

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

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

答案 10 :(得分:2)

下面是一个扩展方法,用于检查字符串是否大于所需的字符串,并将字符串缩短为定义的最大字符数量,并附加“...”。

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

答案 11 :(得分:2)

从C#

中的字符串中获取前n个字符
String yourstring="Some Text";  
String first_n_Number_of_Characters=yourstring.Substring(0,n);

答案 12 :(得分:2)

C# 8.0中,您可以像这样获得字符串的前五个字符

string str = data[0..5];

以下是有关Indices And Ranges

的更多信息

答案 13 :(得分:2)

这是您在2020年的做法:

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

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

Console.WriteLine(first5.ToString());

尽管如此,最近许多.NET API都允许跨度。尽可能坚持下去!

注意::如果定位.NET Framework,请添加对System.Memory程序包的引用,但不要期望获得同样出色的性能。

答案 14 :(得分:1)

我用:

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

或者替代,如果你想检查空白(而不是仅仅是空):

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

答案 15 :(得分:1)

或者您可以使用String.ToCharArray()
它需要int startindexint length作为参数并返回char[]

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

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

答案 16 :(得分:0)

如果我们只希望从任何字段开始输入前5个字符,则可以通过“左属性”来实现

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

答案 17 :(得分:0)

当str小于5时,请尝试使用此代码。

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

答案 18 :(得分:-3)

尝试以下代码

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

答案 19 :(得分:-3)

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

@item.First_Name.Substring(0,1)

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