土耳其字符分裂

时间:2015-08-10 08:32:01

标签: java split

我有一个人名字符串,其中包含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";
}

3 个答案:

答案 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表)字符。