我问了一个关于删除空格和标签的问题。现在我还需要其他东西。我需要能够检查字符串的第一个字符是空格还是制表符。任何人都可以想到一个很好的方法来做到这一点。
谢谢,
答案 0 :(得分:12)
最好的方法是使用Char.IsWhiteSpace
方法:
// Normally, you would also want to check that the input is valid (e.g. not null)
var input = "blah";
var startsWithWhiteSpace = char.IsWhiteSpace(input, 0); // 0 = first character
if (startsWithWhiteSpace)
{
// your code here
}
该方法的文档明确提到了什么是白色空间;如果由于某种原因,字符列表不符合您的需求,您将不得不手动进行更严格的检查。
答案 1 :(得分:6)
您可以这样检查:
if( myString[0] == ' ' || myString[0] == '\t' ){
//do your thing here
}
这对于空字符串和空字符串都会失败,所以你应该让它更加安全,如下所示:
if( !string.IsNullOrEmpty(myString) && (myString[0] == ' ' || myString[0] == '\t') ){
//do your thing here
}
答案 2 :(得分:4)
我会选择类似的东西:
if (str.StartsWith(" ") || str.StartsWith("\t")) {
...
}
或:
if ((str[0] == ' ') || (str[0] == "\t")) {
...
}
我实际上更喜欢前者,因为你不必担心空字符串的问题。
如果您希望将来处理更复杂的案例,可以使用正则表达式,例如:
if (Regex.IsMatch (str, @"^\s")) ...
这可以修改为处理任意复杂的情况,虽然这有点像为你的特定情况杀死带有热核弹头的苍蝇。
答案 3 :(得分:4)
如果您不仅对空间和制表符感兴趣,而且对一般的空白感兴趣,请使用:
if(!string.IsNullOrEmpty(myString) && char.IsWhiteSpace(myString[0]))
// It's a whitespace
答案 4 :(得分:1)
if (text[0] == ' ' || text[0] == '\t')
答案 5 :(得分:1)
只是为了好玩:
if (Regex.IsMatch(input, @"^\s")) {
// yep, starts with whitespace
}
请注意,虽然许多其他答案在给定空字符串时会失败,但是这个答案会起作用,并且它很容易扩展以匹配比字符串开头的空格更复杂的东西。有些人发现正则表达式对于简单检查来说是过度杀伤,但是其他人认为如果你想对字符串进行模式匹配,你应该使用正则表达式。
答案 6 :(得分:1)
if(myString[0]==' ' || myString[0]=='\t')
{
//do something
}
答案 7 :(得分:0)
您需要导入System.Linq
命名空间。
var firstToken = yourString.FirstOrDefault();
if (firstToken == ' ' || firstToken == '\t')
{
// First character is a space or tab
}
else
{
// First character is not a space or tab, or string is empty.
}