我需要检查一个中文省份是否包含在一个中文地址里。 我能够轻松读写汉字。 我尝试使用String的indexOf()方法来检查省份(例如广东)是否包含在地址(中国 广东)中。然而,这总是返回-1。 当我尝试检查数字(例如103是否包含在9910399中)时,它运行正常。 我需要做一些不同的事情来处理UTF-8字符串匹配吗?谢谢。 Matt
我刚刚尝试了你的示例,虽然我在系统上没有中文字体,所以字符显示不正确,但indexOf()对我来说很好用。因此,请检查您源文件(*.java)的编码。例如,如果您使用的是eclipse,请在Window / Preferences / General / Workspace / Text file Encoding下进行检查。我正在使用UTF-8。第二个问题是Java编译器使用的编码。在eclipse的情况下,您不必说任何话。我认为对于javac,您应该使用-encoding明确设置编码。否则,可能会使用默认的操作系统编码。祝你好运。
String
内部始终为UTF-16编码,因此无论您遇到什么问题都与UTF-8无关。您确定要查找的字符串中的字符完全相同吗?可以使用System.out.println((int)s.charAt(i))
在两侧进行检查。 - hmakholm left over Monica