C# 如何检查字符串的第一个字符是空格还是制表符?

C# 如何检查字符串的第一个字符是空格还是制表符?,c#,C#,我问了一个关于删除空格和制表符的问题。现在我还需要别的东西。我需要能够检查字符串的第一个字符是空格还是制表符。有人能想出一个好办法吗 谢谢,您可以这样检查: if( myString[0] == ' ' || myString[0] == '\t' ){ //do your thing here } if( !string.IsNullOrEmpty(myString) && (myString[0] == ' ' || myString[0] == '\t') ){

我问了一个关于删除空格和制表符的问题。现在我还需要别的东西。我需要能够检查字符串的第一个字符是空格还是制表符。有人能想出一个好办法吗


谢谢,

您可以这样检查:

if( myString[0] == ' ' || myString[0] == '\t' ){
  //do your thing here
}
if( !string.IsNullOrEmpty(myString) && (myString[0] == ' ' || myString[0] == '\t') ){
  //do your thing here
}
对于emtpy和null字符串,这将失败,因此您可能应该使其更安全,如下所示:

if( myString[0] == ' ' || myString[0] == '\t' ){
  //do your thing here
}
if( !string.IsNullOrEmpty(myString) && (myString[0] == ' ' || myString[0] == '\t') ){
  //do your thing here
}

最好的方法是使用以下方法:


该方法的文档明确提到了什么是空白;如果由于某种原因,字符列表不适合您的需要,您将不得不手动执行更严格的检查。

我只想使用以下内容:

if (text[0] == ' ' || text[0] == '\t')
if (str.StartsWith(" ") || str.StartsWith("\t")) {
    ...
}
if (Regex.IsMatch (str, @"^\s")) ...
或:

实际上我更喜欢前者,因为您不必担心空字符串的问题

如果您想在将来处理更复杂的情况,可以使用正则表达式,例如:

if (str.StartsWith(" ") || str.StartsWith("\t")) {
    ...
}
if (Regex.IsMatch (str, @"^\s")) ...

这可以修改为处理任意复杂的情况,尽管这有点像在特定情况下使用热核弹头杀死苍蝇。

如果您不仅对空格和制表符感兴趣,而且对空白感兴趣,请使用以下选项:

if(!string.IsNullOrEmpty(myString) && char.IsWhiteSpace(myString[0]))
    // It's a whitespace
只是为了好玩:

if (Regex.IsMatch(input, @"^\s")) {
  // yep, starts with whitespace
}

请注意,当给定一个空字符串时,许多其他答案都会失败,但这个答案会起作用,而且它很容易扩展以匹配比字符串开头的空格更复杂的内容。有些人认为正则表达式对于简单的检查来说是多余的,但是其他人认为如果你想对字符串进行模式匹配,你应该使用正则表达式。

你需要导入
System.Linq
名称空间

if(myString[0]==' ' || myString[0]=='\t') 
{
    //do something
}
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.
}

只是一个空格或制表符,还是空白?一个空格或制表符。还有什么其他的空白区呢?请看这里:@杰森,Daniel Hilgarth,我们可以从好的链接中看到,有很多空白的字符,尤其是当你考虑范围“u+2000 -u+200 A(不同种类的空格)”时。您可能还需要考虑其他非打印工具。您也可以使用<代码> char。IsWhiteSpace(输入(0))< /C> >用<代码>输入=“”/代码>…;您应该检查字符串是否为null或空。看到我的答案了吗?我不认为这样一个微不足道的例子需要明确的错误检查。它确实需要。永远不要相信输入@B.ClayShannon:最初是希腊语的“ειρήνημετοΔιβολο”,与魔鬼和睦相处(与我本性的黑暗面更加和睦相处),但由于拉丁语(或在我的圈子里被称为拉丁语)更加简洁而有所改变。这只是一个刻痕,是我在雇佣圈里有太多人和我同名时编造的:——)