如何获取String的前五个字符

Kni*_*ing 118 c# asp.net string char

我已经阅读了这个问题,以获得字符串的第一个字符.有没有办法从C#中的字符串中获取前n个字符?

Hab*_*bib 200

你可以使用Enumerable.Take像:

char[] array = yourStringVariable.Take(5).ToArray();
Run Code Online (Sandbox Code Playgroud)

或者您可以使用String.Substring.

string str = yourStringVariable.Substring(0,5);
Run Code Online (Sandbox Code Playgroud)

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

如果要将结果返回到字符串中,则可以使用:

方法的优点是不会事先检查长度.

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

喜欢:

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

  • string val = new string(yourStringVariable.Take(6).ToArray()); 但是如果yourStringVariable的长度小于5,则Substring将出错 (3认同)
  • `IsNullOrWhiteSpace` 在这里是错误的。考虑一个包含 10 个空格的字符串 - 您的代码将返回全部 10 个空格。请改用“IsNullOrEmpty”。(将“IsNullOrWhiteSpace”与任何其他测试结合起来并不好;而是测试 null+empty,然后测试“Trim”(如果这是指定的行为),然后执行所需的任何测试/操作。) (3认同)

Tec*_*hDo 46

请试试:

yourString.Substring(0, 5);
Run Code Online (Sandbox Code Playgroud)

检查C#Substring,String.Substring方法

  • 如果yourString的长度小于5,则会出错 (18认同)
  • 如果 `yourString` 的长度小于 5,则会出现异常。为了避免异常,我们可以根据条件进行子串,例如,`yourString.Length <= 5 ? yourString : yourString.Substring(0, 5)` (3认同)

Adi*_*dil 36

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

string result = str.Substring(0,5);
Run Code Online (Sandbox Code Playgroud)

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

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

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


ilt*_*ter 25

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

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

假设您需要前5个字符.你应该通过适当的检查得到它们,如下所示:

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

// firstFiveChars: "love" (4 characters)
Run Code Online (Sandbox Code Playgroud)

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

我想你应该已经明白了...


Ste*_*ven 17

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

解决方案1(使用'子串'):

var firstFive = stringValue != null ? 
                   stringValue.Substring(0, stringValue.Length >= 5 ? 5 : stringValue.Length) :
                   null;
Run Code Online (Sandbox Code Playgroud)

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

解决方案2(使用'Take'):

var firstFive = stringValue != null ? 
                    string.Join("", stringValue.Take(5)) : 
                    null;
Run Code Online (Sandbox Code Playgroud)

使用'Take'将阻止您需要检查给定字符串的长度.


小智 15

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

微软文档

或者我喜欢称它们为 Pandas 切片。

旧方式:

string newString = oldstring.Substring(0, 5);
Run Code Online (Sandbox Code Playgroud)

新方法:

string newString = oldstring[..5];
Run Code Online (Sandbox Code Playgroud)

乍一看,这对于较短代码的可读性来说似乎是一个非常糟糕的权衡,但新功能为您提供了

  1. 切片数组(以及字符串)的标准语法
  2. 像这样很酷的东西:

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

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

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

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


Via*_*nev 12

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

string str = yourString.Remove(n);
Run Code Online (Sandbox Code Playgroud)

n - 您需要的字符数

var zz = "7814148471";
Console.WriteLine(zz.Remove(5));
//result - 78141
Run Code Online (Sandbox Code Playgroud)

  • 这在内部与"this.Substring(0,5)"相同,因此您需要确保字符串具有适当的长度. (3认同)

小智 9

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

string str = (yourStringVariable + "    ").Substring(0,5).Trim();
Run Code Online (Sandbox Code Playgroud)

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


小智 8

使用PadRight函数可防止字符串太短,抓住需要的内容,然后在一条语句中从头开始修剪所有空格。

strSomeString = strSomeString.PadRight(50).Substring(0,50).TrimEnd();
Run Code Online (Sandbox Code Playgroud)


Raj*_*mar 7

string str = "GoodMorning"

string strModified = str.Substring(0,5);
Run Code Online (Sandbox Code Playgroud)

  • 如果变量“str”的长度小于 5 会出错 (2认同)

l33*_*33t 6

2020 年你会这样做:

var s = "ABCDEFGH";
var first5 = s.AsSpan(0, 5);
Run Code Online (Sandbox Code Playgroud)

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

Console.WriteLine(first5.ToString());
Run Code Online (Sandbox Code Playgroud)

不过,如今许多.NETAPI 都允许跨度。如果可能的话,坚持下去!

注意:如果目标添加对System.Memory.NET Framework包的引用,但不要指望同样出色的性能。