如何在java中读取字符串中的特殊字符[关闭]
Posted
技术标签:
【中文标题】如何在java中读取字符串中的特殊字符[关闭]【英文标题】:How to read special characters in a string in java [closed] 【发布时间】: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。 其实.. 我只想要大写字母。所有其他都被视为无效。 【参考方案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<=c<=90
在 java 中不起作用。你不能链接比较!
你必须这样写:
if (65 <= c && c <= 90)
或者为了提高可读性,我建议你这样做:
if ('A' <= c && c <= 'Z')
【讨论】:
好的。这就是问题所在。非常感谢。我不知道在 java 中不可能进行链比较。谢谢@parkerHalo。【参考方案3】:在 Java 中,65<=c<=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;
【讨论】:
好的。多谢。 :)以上是关于如何在java中读取字符串中的特殊字符[关闭]的主要内容,如果未能解决你的问题,请参考以下文章