[英]How To Split First & Last Name String From Full Name In Android
我有一个带有全名EditText
字段的表单,我想将字符串分解为名字和姓氏字符串。 谁可以帮我这个事? 我可以知道实现目标的正确方法是什么吗?
如果用户输入他/她的名字,如ABC
。 名字将是A
& 姓氏将是BC
我正在尝试这个:
EditText UNSP =(EditText)findViewById(R.id.UserNameToSIGNUP);
String UserFullName=UNSP.getText().toString();
String[] arr=UserFullName.split(" ");
String fname=arr[0];
String lname=arr[1];
Log.d("First name",fname);
Log.d("last name",lname);
if(UserFullName.length()==0) {
Toast.makeText(getApplicationContext(), "Submit Name", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
}
}
如果您只需要全名中的姓氏和名字而不使用数组,这是我认为的最佳方法。 名字可以在两个或两个以上的词上,但在现实世界中姓氏总是在一个词上。
String name = "Abdul Latif Hussain"
String lastName = "";
String firstName= "";
if(name.split("\\w+").length>1){
lastName = name.substring(name.lastIndexOf(" ")+1);
firstName = name.substring(0, name.lastIndexOf(' '));
}
else{
firstName = name;
}
输出字符串将是: firstName="Abdul Latif" lastName="Hussain"
对于多个名称,最好为每个字段设置单独的EditTexts
。
对于您的实施,如果您可以保证他们以该格式输入它,您可以去:
int firstSpace = UserFullName.indexOf(" "); // detect the first space character
String firstName = UserFullName.substring(0, firstSpace); // get everything upto the first space character
String lastName = UserFullName.substring(firstSpace).trim(); // get everything after the first space, trimming the spaces off
只需进行一些错误检查以确保格式正确,否则可能会出现异常
在 Kotlin 中,我想出了以下解决方案:
val displayName = "John Smith Fidgerold Trump"
var parts = displayName.split(" ").toMutableList()
val firstName = parts.firstOrNull()
parts.removeAt(0)
val lastName = parts.joinToString(" ")
Log.debug("*** displayName: $displayName")
Log.debug("*** firsteName : $firstName")
Log.debug("*** lastName : $lastName")
Log.debug("**************")
示例输出:
> ** displayName: John Smith Fidgerold Trump
> ** firsteName : John
> ** lastName : Smith Fidgerold Trump
> *************
> ** displayName: John Smith Fidgerold
> ** firsteName : John
> ** lastName : Smith Fidgerold
> *************
> ** displayName: John Smith
> ** firsteName : John
> ** lastName : Smith
> *************
> ** displayName: John
> ** firsteName : John
> ** lastName :
> *************
> ** displayName:
> ** firsteName :
> ** lastName :
> *************
请使用这个。 它将工作 100%
str = UNSP.getText().toString();
String[] splited = str.split("\\s+");
使用String.split(" ").
更容易String.split(" ").
这将创建分隔的字符串,每个字符串都以找到" "
字符时结束。
仅用于名字:
public static void getUserFirstName(String fullname){
String firstName;
String[] fullNameArray = fullname.split("\\s+");
if(fullNameArray.length>1) {
StringBuilder firstNameBuilder = new StringBuilder();
for (int i = 0; i < fullNameArray.length - 1; i++) {
firstNameBuilder.append(fullNameArray[i]);
if(i != fullNameArray.length - 2){
firstNameBuilder.append(" ");
}
}
firstName = firstNameBuilder.toString();
}
else{
firstName = fullNameArray[0];
}
}
科特林版本:
val fullName = "Adriatik Gashi"
val idx = fullName.lastIndexOf(' ')
if (idx == -1) {
Toast.makeText(context, "Invalid full name", Toast.LENGTH_LONG).show()
return
}
val firstName = fullName.substring(0, idx)
val lastName = fullName.substring(idx + 1)
Log.e("SPLITED NAME", firstName + " - " + lastName)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.