【问题标题】:Ignore numbers in a string忽略字符串中的数字
【发布时间】:2014-07-02 10:48:11
【问题描述】:

例子:

    String t;
    String j ="j2se";
    Scanner sc =new Scanner(System.in);
    System.out.println("enter the search key:");
    t=sc.next();
    if (j.contains(t))
    {
        System.out.println("yes");
    }
    else System.out.println("no");

如果用户输入“j2”、“se”或“j2s”作为输入,则输出为“yes”。如果输入为“jse”,则输出为“no”。

有没有办法像忽略大写或小写字母一样忽略存储在字符串搜索中的数字?

【问题讨论】:

  • 不是内置的,创建字符串的副本,并从中删除所有不需要的字符
  • 只有数字?如果用户输入“j@”或“j$y”怎么办?
  • @RafaelOsipov 对不起,只有数字.. 但是,我知道更多,你仍然可以帮助我
  • @clem 你的任务是删除数字还是只保留字母?

标签: java string


【解决方案1】:

为什么你不只是创建这个字符串的副本,里面没有数字? 在将这个新字符串与您的数组进行比较之后?

喜欢:

String stringWithoutNumber = j.replaceAll("\\d+","");

stringWithoutNumber.contains(t);

许多程序都有一个名为 sanitize 的函数,它在比较之前清理 url 或字符串。

希望对你有帮助

-- 编辑--

您不需要将+ 放入\\d+,因为replaceAll 方法替换了所有数字。但它更有效,因为它减少了替换。

【讨论】:

  • @TheLostMind,我来晚了^^
  • 永远不会太晚 .. :)
  • @ThomasLeduc 谢谢!它的工作原理..你能解释一下这是怎么回事吗?谢谢
  • @clem 它将字符串中的所有数字替换为空字符串。 replaceAll 得到一个正则表达式 \\d 表示任意数字,并将其替换为 ""。
  • @ThomasLeduc - 我认为最好使用\\d+(适用于java23se):P
【解决方案2】:

在字符串上使用replaceAll("\\d+",""),然后进行比较。 这将从您的字符串中删除所有数字。现在您可以使用这个新字符串并进行比较。 或使用:

\\W+ // replaces everything apart from characters .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2016-07-30
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多