Android如何从gps纬度/经度获取位置时避免字符串中的垃圾字符

时间:2016-10-13 05:47:48

标签: android gps location latitude-longitude google-geolocation

我以编程方式从GPS(纬度/经度)收到位置地址;但是,有时我会收到包含特殊/不需要的字符的位置地址。

当我将包含特殊/不需要的字符的地址发送到服务器时,它们会被服务器拒绝。

示例1:,delhi,ä¸å?½

示例2:सà¥??क

如何防止此问题?

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来避免此问题,并匹配所有字符都是US-ASCII代码点类型。

org.apache.hadoop.hdfs.server.common.IncorrectVersionException: Unexpected version of storage directory ..\Metadata\data\dfs\namenode. Reported: -63. Expecting = -57.
    at     org.apache.hadoop.hdfs.server.common.StorageInfo.setLayoutVersion(StorageInfo.java:178)
    at org.apache.hadoop.hdfs.server.common.StorageInfo.setFieldsFromProperties(StorageInfo.java:131)
    at org.apache.hadoop.hdfs.server.namenode.NNStorage.setFieldsFromProperties(NNStorage.java:608)
    at org.apache.hadoop.hdfs.server.common.StorageInfo.readProperties(StorageInfo.java:228)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:323)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:955)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:700)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:529)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:585)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:751)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:735)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1407)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1473)
16/10/13 12:45:13 INFO util.ExitUtil: Exiting with status 1
16/10/13 12:45:13 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at myserver25/192.1.100.26
************************************************************/

如果您使用的是Java 8,可以这样做:

String testText [] = new String[] { "delhi", "中�", 
    "à¤", "à¥à¤• ", "tessst½", "some valid test text1213"
};

for (String str : testText) {
    if (str.matches("\\A\\p{ASCII}*\\z")) {
        //do something
        Log.d("TAG", str + " - String is valid");
    }
}

如果您只是想检查每个字符,请执行以下操作:

textInfoFromLocation.chars().allMatch(c -> c < 128)

可在此answer

中找到更多信息