如何在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&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;


【讨论】:

好的。多谢。 :)

以上是关于如何在java中读取字符串中的特殊字符[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

读取带有特殊字符的字符串并在`tr`和`sed`中使用它[关闭]

如何使用搜索引擎搜索特殊字符? [关闭]

js 如何判断输入的字符串中含有特殊字符。最好有例子啊

如何从文件中读取特殊字符?

如何使程序可以获得用户输入的特殊字符的值

c#中 如何解决xml格式的字符串中特殊字符