2010-08-28 134 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)