【问题标题】:How to read special characters in a string in java [closed]如何在java中读取字符串中的特殊字符[关闭]
【发布时间】:2016-04-03 03:08:53
【问题描述】:

我得到了一个字符串,我需要找出它是否包含任何特殊字符?我尝试使用charAt() 和 ASCII 值。但它不起作用。请有人帮忙。提前致谢。

for(int i=0;i<s.length();i++)
{
    char c=s.charAt(i);
    if(65<=c<=90)
    {
        System.out.println("Valid");
    }
    else if(97<=c<=122)
    {
        System.out.println("Invalid as it contains lower case letter");
        break;
    }
    else if(48<=c<=57)
    {
        System.out.println("Invalid as it contains numbers");
        break;
    }
    else
        System.out.println("Invalid as it contains special characters");
}

【问题讨论】:

  • 哪些字符是“特殊字符”。或者更具体地说:哪些字符被认为是“OK”?
  • “它不起作用”并没有告诉我们你的代码是什么样子的,或者输入,或者预期的输出,或者实际的输出。请提供minimal reproducible example
  • 其实.. 我只想要大写字母。所有其他都被视为无效。

标签: java string special-characters charat


【解决方案1】:

这样的事情会起作用:

public static void main(String[] args) {
    String s = "asda®††∆˚∆asd121";
    System.out.println(s.replaceAll("[a-zA-Z0-9]", ""));
}

O/P:

®††∆˚∆

如果替换后的大小为0,则没有特殊字符。您可以使用您认为特殊的内容更新正则表达式。 :)

【讨论】:

  • replaceAll 是一个函数吗?如何使用它?实际上我是 Java 编程新手。
  • @Darpanjbora - 是的,它是一个函数。它需要一个正则表达式作为输入
【解决方案2】:

您遇到的问题是:65&lt;=c&lt;=90 在 java 中不起作用。你不能链接比较!

你必须这样写:

if (65 <= c && c <= 90)

或者为了提高可读性,我建议你这样做:

if ('A' <= c && c <= 'Z')

【讨论】:

  • 好的。这就是问题所在。非常感谢。我不知道在 java 中不可能进行链比较。谢谢@parkerHalo。
【解决方案3】:

在 Java 中,65&lt;=c&lt;=90 不是有效的比较。

你需要这样写你的条件:

if (65<=c && c<=90) {
    ...
} else if (97<=c && c<=122) {
    ...
}

【讨论】:

  • 非常感谢。其实我不知道。谢谢你的帮助。 :)
【解决方案4】:

您可以使用 StringUtils :isAllUpperCase

如果您想检查每个字符,请尝试这样的操作。

public static boolean isUpperCase(String s)
    {
        for (int i=0; i<s.length(); i++)
        {
            if (!Character.isUpperCase(s.charAt(i)))
            {
                return false;
            }
        }
        return true;

}

【讨论】:

  • 好的。多谢。 :)
猜你喜欢
  • 2019-12-13
  • 2021-02-12
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-08-18
  • 2019-02-09
  • 2016-10-01
相关资源
最近更新 更多