2010-08-28 169 views
2

我有一个带有全名文本字段的表单,我想将字符串拆分成姓氏和名字......我在Coldufusion中处理表单。将姓名字段拆分成姓氏和名字

什么是最可靠的方法来实现这一目标?我假设JavaScript不是一种选择,因为如果不存在,表单会产生错误。任何例子都会很棒。

感谢

+2

对于你应该准备来处理这类输入的示例,请参阅http ://semaphorecorp.com/nc/namechop.html – 2010-08-28 05:02:55

+0

是的......无论您为这个问题选择何种解决方案,您都应该意识到它依赖于一个错误的前提,也就是说您可以准确地识别第一个和最后一个名称所有情况。使用split()或listFirst()/ listRest是一个坚实的起点,但您需要清理分割不准确的情况。 (这是一个很好的理由来设计一个单独的字段为名字或姓氏,或任何你想收集的名称字段的表单,用户将不可避免地分裂他或她的名字比你可以。) – 2011-01-24 18:47:57

回答

10

找到一个更好的解决方案

<cfset fullName = "foo bar"> 
<cfset firstName = listFirst(fullName, " ")> 
<cfset lastName = listRest(fullName, " ")> 
+0

我就是这么做的。 – ale 2010-08-29 13:59:40

0

ColdFusion中,它被提交后,我会分裂它放在一个空格字符。

+0

你知道做这样的事情,吉朋? – Mohamad 2010-08-28 00:48:29

1

如果您只是想分割第一个空间,您可以使用列表功能。例如,您可以通过使用

<cfset first = listfirst(fullname, " ")> 

列表功能都需要一个可选参数,分隔符,它可以让你指定的列表被分隔方式获得的第一个字。所以,在这种情况下,你的列表是以空格分隔的。

请记住,并非所有名称都是两个单词。人们使用中间名,像“De Marco”和“Van DeGraff”等构造,或者像“Lisa Ann”这样的多个名字。但这会给你一个很好的近似值。

+0

Ben,是否有可能然后从fullName中减去它...因此以第一个单词作为firstName并将其余的作为lastName结束? – Mohamad 2010-08-28 02:12:32

+1

认为我按照正确的顺序得到了参数...将全名中的名字替换为无,然后修剪以除去另外的前导空格。 – Antony 2010-08-28 07:19:03

0

您可以使用为gettoken(全名,1),并为gettoken(全名,2)