用抑扬符(Â)删除大写字母A

时间:2019-06-14 07:24:26

标签: java unicode

我写了一个用于获取纬度和经度的代码,但是,这些值打印有“”。有什么办法可以删除这个字符? 搜索显示它的Unicode地址为U + 00C2,但使用string.replace引发错误。 有什么办法可以删除这个字符? 代码:

import java.net.*;

import java.io.*;
import java.util.Scanner;
import static java.lang.System.*;
class findlatlon {
    static String code = " ";
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //gets the city
        out.println("enter city, add plus between multiple words");
        String term = sc.nextLine();

        try {URL url = new URL("http://www.geonames.org/search.html?q=" + term + "&country=");

            URLConnection ucl = url.openConnection();
            InputStream stream = ucl.getInputStream();
            int i;
            //the string in which the html code will be stored
            code = " ";
            while ((i=stream.read())!= -1) {
                code += Character.toString((char)i);
            }
            //printing the html, only for testing
            System.out.print(code);
        } catch(Exception e) {
            System.out.println("error");
        }
        int i = 0;
        char ch = ' ';
        String lon = " ";
        String lat = " ";
        for (i = 0 ;i < code.length() ; i++) {
            ch = code.charAt(i);
            if (ch == '\u00B0') {
                break;
            }
        }
        int j;
        char ch2 =  ' ';

        for (j = i; i > 0; j--) {
            ch2 = code.charAt(j);
            if (ch2 =='N' || ch2 == 'S') {
                break;
            }
        }
        char ch3 = ' ';
        int k = 0;
        for (k = j; k < 45800; k++) {
            ch3 = code.charAt(k);
            if (ch3 != '<') {
                lat += ch3;
            } else {
                break;
            }
        }
        char ch4 = ' ';
        int z;
        for (z = k; z < 45000; z++) {
            ch4 = code.charAt(z);
            if (ch4 == 'W' || ch4 == 'E') {
                break;
            }
        }
        int y;
        char ch5 = ' ';
        for (y = z; y < 54000; y++) {
            ch5 = code.charAt(y);
            if (ch5 == '<') {
                break;
            } else {
                lon += ch5;
            }
        }

        System.out.println(lat);
        System.out.println(lon);
    }
}

输出:

 S 33° 52' 4''
 E 151° 12' 26''

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

  

但使用string.replace会引发错误

replace没有理由对此有任何错误。

str = str.replace("Â", "");

str = str.replace("\u00C2", "");

Live example


也就是说,请参见Filburt's comment。这些字符是使用错误的文本编码读取页面的副作用。 (有关文本编码here的更多信息。)如果您使用正确的编码进行阅读,或使用它们提供的API,则应该不会出现此问题。