【问题标题】:How to check if a string ends with a number, without regex? [duplicate]如何在没有正则表达式的情况下检查字符串是否以数字结尾? [复制]
【发布时间】:2019-11-05 21:19:52
【问题描述】:

我需要检查字符串的最后一个字符是否以 int 结尾。我想避免使用正则表达式,因为我觉得它很难,但如果没有更流畅的方法,我会尝试。

我基本上尝试了一些看起来像这样的东西:

text.EndsWith(INTEGER)]

【问题讨论】:

  • 这无法编译...I don't would like to avoid regex 你是说你想远离regex 还是... 还有你看到的问题是什么,预期的输出是什么?跨度>
  • 您是否只想知道最后一个字符是否是使用“普通”数字的十进制数字(09)?或者您是否也想接受other writing systems 中的十进制数字?非十进制数字,如分数和罗马数字字符(例如,½)呢?
  • @JoeSewell 他在问题正文中指定了int
  • bool result = !string.IsNullOrEmpty(text) && char.IsDigit(text[text.Length - 1]);
  • @OlivierRogier 为什么将“检查最后一个字符是否为数字”转换为“检查字符串以整数结尾”来完全改变问题?

标签: c# .net string


【解决方案1】:
Boolean result = char.IsDigit(text[text.Length - 1]);

【讨论】:

  • 请注意,这对于其他语言的数字字符返回 true。所以它匹配的不仅仅是 0-9。
  • 编辑到 IsDigit
【解决方案2】:

使用 linq Last 方法和 Isdigit 函数

bool isDigit = Char.IsDigit(("one1").Last());

【讨论】:

  • 字符串周围的括号不是必需的。
  • @RufusL 我知道,这让我的代码更简洁
  • 额外的括号与干净的代码相反,除非运算符优先级不明显。
【解决方案3】:

隔离最后一个字符并尝试将其解析为整数:

private static bool IsStringEndsWithDigit(string str)
{
    if (String.IsNullOrEmpty(str))
    {
        return false;
        // or throw an exception
        // throw new Exception("string can not be empty");
    }
    string last = str.Substring(str.Length - 1, 1);
    int num;
    var isNum = int.TryParse(last, out num);
    return isNum;
}

【讨论】:

  • @Çöđěxěŕ 我不明白为什么它不起作用(在示例中它返回 false)。此外,这个问题与不同的文化无关,这个问题是关于识别字符串末尾的数字。我不明白为什么要投反对票。
【解决方案4】:
var lastChar = text.Last();
var endsWithNum = lastChar >= '0' && lastChar <= '9';

【讨论】:

    【解决方案5】:
    string s = "hello world0";
    int len = s.Length;
    List<char> digits = new List<char>(){'0','1','2','3','4','5','6','7','8','9'};
    if (digits.Contains(s[len - 1]))
    {
        Console.WriteLine("last character is digits");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多