我已阅读该字符串的question to get first char 。有没有办法从C#中的字符串中获取前n个字符?
答案 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)
答案 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中,有一种新方法可以做到这一点:范围运算符
或者我喜欢称呼它们为熊猫切片。
旧方法:
# 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);
乍看之下,对于较短的代码来说,在一些可读性上似乎是一个很差的折衷,但是新功能为您提供了
像这样的酷东西:
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)
答案 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 startindex
和int 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)
在此我可以得到字符串的第一个字母