我有一个人名字符串,其中包含Saime Çiloğlu Akdan
等土耳其字符。我想做什么从字符串中删除中间名。因此,字符串应为Saime Akdan
。我尝试了几件事,但我总是得到java.lang.NullPointerException
。原因是因为土耳其人的性格。我认为split
功能无法识别土耳其语字符。
// String name = input_row.PERSON_NAME.toLowerCase(new Locale("tr", "TR")).toString();
String name = new String(input_row.PERSON_NAME.getBytes("UTF-8"));
String[] names = name.split("\\s+");
if (names.length == 3) {
output_row.PERSON_EMAIL = names[0] + "." + names[2] + "@metro-tr.com";
} else {
output_row.PERSON_EMAIL = names[0] + "." + names[1] + "@metro-tr.com";
}
答案 0 :(得分:1)
不是土耳其字符是NPE的原因,因为
String name = "Saime Çiloğlu Akdan";
String[] names = name.split("\\s+");
System.out.println(names[0] + " "+ names[2]);
正常工作正常。
PS:我真的不明白这一行:
new String(input_row.PERSON_NAME.getBytes("UTF-8"));
input_row.PERSON_NAME
是你需要的字符串,超出我的原因是你为什么要将它转换为字节数组,然后再转回String
。
答案 1 :(得分:0)
String name = "Saime Çiloğlu Akdan";
String[] names = name.split(" ");
if (names.length == 3) {
System.out.println(names[0] + "." + names[2] + "@metro-tr.com");
} else {
//output_row.PERSON_EMAIL = names[0] + "." + names[1] + "@metro-tr.com";
}
O / P:Saime.Akdan@metro-tr.com
答案 2 :(得分:0)
您可以将字符串传递给一个函数,该函数只将字母数字字符复制到另一个字符串中,然后返回并使用它。
到目前为止,如果字符串包含带有任何土耳其字符的单词,则不要复制此单词。否则,你这样做。
这样,你的函数将返回一个字符串,其中没有任何非常规(对于标准的ascii表)字符。