Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中删除汉字 public class RemoveHZ//删除汉字 { 公共静态字符串处理(字符串s){ StringBuffer sb=新的StringBuffer; StringBuffer se=new StringBuffer();//存储最终结果 int l=sb.length(); 字符c; 对于(int i=0;i40&&c_Java - Fatal编程技术网

如何在java中删除汉字 public class RemoveHZ//删除汉字 { 公共静态字符串处理(字符串s){ StringBuffer sb=新的StringBuffer; StringBuffer se=new StringBuffer();//存储最终结果 int l=sb.length(); 字符c; 对于(int i=0;i40&&c

如何在java中删除汉字 public class RemoveHZ//删除汉字 { 公共静态字符串处理(字符串s){ StringBuffer sb=新的StringBuffer; StringBuffer se=new StringBuffer();//存储最终结果 int l=sb.length(); 字符c; 对于(int i=0;i40&&c,java,Java,计算机上的每个字符都有一个值。这是因为计算机不能像人一样“读取”字符。例如,这些值存储在ASCII表中。如果在代码中打印出c,则可以看到这些值 汉字的值为: 20320 22909 21834 如果查看下面的ASCII表,您可以看到您提供的代码过滤掉了从)到~的所有字符 如果表中的字符介于40和127之间,则循环遍历每个字符,并仅将其附加到StringBuffer 因此,print语句将只打印以下字符: )*+,-./0-9:;?@A-Z^ A-Z{|} 请注意,您排除了(和DEL(由于从4

计算机上的每个字符都有一个值。这是因为计算机不能像人一样“读取”字符。例如,这些值存储在ASCII表中。如果在代码中打印出
c
,则可以看到这些值

汉字的值为:

  • 20320
  • 22909
  • 21834
如果查看下面的ASCII表,您可以看到您提供的代码过滤掉了从
~
的所有字符


如果表中的字符介于40和127之间,则循环遍历每个字符,并仅将其附加到
StringBuffer

因此,print语句将只打印以下字符:

)*+,-./0-9:;<=>?@A-Z^ A-Z{|}

请注意,您排除了
DEL
(由于从41开始到126结束)

尝试以下方法:

public class RemoveHZ                            //remove chinese characters
{
    public static String deal(String s){
        StringBuffer sb = new StringBuffer(s);
        StringBuffer se = new StringBuffer();    //store final results
        int l = sb.length();
        char c;
        for(int i=0; i<l; i++){                 
            c = sb.charAt(i);                   //get each char from string
            if(c>40 && c<127){                  //what does this mean?
                se.append(c);
            }
        }
        return new String(se);
    }
    public static void main(String[] args) 
    {
        System.out.println(deal("hello你好啊"));
    }
}
公共类删除hz{
公共静态字符串处理(字符串s){
StringBuffer sb=新的StringBuffer;
StringBuffer se=new StringBuffer();//存储最终结果
int l=sb.length();
字符c;
对于(int i=0;i

另一个解决方案是使用
if(!Character.isIdeographic))
但这也会从其他语言中删除字符。

这意味着您希望您的ASCII字符代码介于40和127之间,查看ASCII图表将帮助您理解其含义!您应该检查大于32的字符值。
c>32
因为这些字符“,#,%,(小于40。这个问题意味着需要提取局部变量重构来为概念命名,比如
isPrintableBasicLatinCharacter
。请参阅IDE文档。顺便说一句,Java不使用ASCII。请参阅。
public class RemoveHZ {
    public static String deal(String s) {
        StringBuffer sb = new StringBuffer(s);
        StringBuffer se = new StringBuffer();    //store final results
        int l = sb.length();
        char c;
        for (int i = 0; i < l; i++) {
            c = sb.charAt(i);                   //get each char from string
            if (Character.UnicodeScript.of(c) != Character.UnicodeScript.HAN) {
                se.append(c);
            }
        }
        return new String(se);
    }

    public static void main(String[] args) {
        System.out.println(deal("hello你好啊"));
    }
}