Paul Steve Panakkalという名前のユーザーがいます。 divコンテナに収まらない長い名前です。とにかく、javascriptまたはjqueryを使用して、姓と名を分けることはできます。
名前はPHPからJavaScriptの変数に取得されます。これは、JSを使用して分割されます。
split
メソッドを使用する必要があります。
'Paul Steve Panakkal'.split(' '); // retutrns ["Paul", "Steve", "Panakkal"]
この方法で使用できます:
'Paul Steve Panakkal'.split(' ').slice(0, -1).join(' '); // returns "Paul Steve"
'Paul Steve Panakkal'.split(' ').slice(-1).join(' '); // returns "Panakkal"
共通点:
var firstName = fullName.split(' ').slice(0, -1).join(' ');
var lastName = fullName.split(' ').slice(-1).join(' ');
はい:
_var fullName = "Paul Steve Panakkal".split(' '),
firstName = fullName[0],
lastName = fullName[fullName.length - 1];
_
参照:
私は、正規表現を始める時だと思う:)
"Paul Steve Panakkal".split(/(\s).+\s/).join("") // "Paul Panakkal"
スペイン語では、2番目のオプション名と、「del Bosque」や「de la Hoya」のような複雑な姓、アクセント記号付きの母音、ñ。次のjavascriptは、完全なスペイン語の名前を解析することができます。これは、大文字と小文字を考慮して作成しているカウントです。それはあなたに与えるJSONを返します
コードは次のとおりです。
function parseName(input) {
var fullName = input || "";
var result = {};
if (fullName.length > 0) {
var nameTokens = fullName.match(/[A-ZÁ-ÚÑÜ][a-zá-úñü]+|([aeodlsz]+\s+)+[A-ZÁ-ÚÑÜ][a-zá-úñü]+/g) || [];
if (nameTokens.length > 3) {
result.name = nameTokens.slice(0, 2).join(' ');
} else {
result.name = nameTokens.slice(0, 1).join(' ');
}
if (nameTokens.length > 2) {
result.lastName = nameTokens.slice(-2, -1).join(' ');
result.secondLastName = nameTokens.slice(-1).join(' ');
} else {
result.lastName = nameTokens.slice(-1).join(' ');
result.secondLastName = "";
}
}
return result;
}
2番目の名前を指定する場合は、姓が必要です。試してみてください:
次のような複雑なものを試してください
あなたの経験をコメントしてください。
提供された文字列に含まれるWordが1つだけの場合を処理する、Speransky Danilの回答の拡張バージョン。
/**
* Gets the first name, technically gets all words leading up to the last
* Example: "Blake Robertson" --> "Blake"
* Example: "Blake Andrew Robertson" --> "Blake Andrew"
* Example: "Blake" --> "Blake"
* @param str
* @returns {*}
*/
exports.getFirstName = function(str) {
var arr = str.split(' ');
if( arr.length === 1 ) {
return arr[0];
}
return arr.slice(0, -1).join(' '); // returns "Paul Steve"
}
/**
* Gets the last name (e.g. the last Word in the supplied string)
* Example: "Blake Robertson" --> "Robertson"
* Example: "Blake Andrew Robertson" --> "Robertson"
* Example: "Blake" --> "<None>"
* @param str
* @param {string} [ifNone] optional default value if there is not last name, defaults to "<None>"
* @returns {string}
*/
exports.getLastName = function(str, ifNone) {
var arr = str.split(' ');
if(arr.length === 1) {
return ifNone || "<None>";
}
return arr.slice(-1).join(' ');
}
あなたが最後のWordが姓であり、単一のWord名も姓であると仮定すると...
var items = theName.split(' '),
lastName = items[items.length-1],
firstName = "";
for (var i = 0; i < items.length - 1; i++) {
if (i > 0) {
firstName += ' ';
}
firstName += items[i];
}
私は以下のコードを試しましたが、私にとってはうまくいきます
var full_name = 'xyz abc pqr';
var name = full_name.split(' ');
var first_name = name[0];
var last_name = full_name.substring(name[0].length.trim());
上記の例:
(1)
If full_name = 'xyz abc pqr';
first_name = "xyz";
last_name = "abc pqr";
(2)
If `full_name = "abc"`:
Then first_name = "abc";
and last_name = "";
名のみが入力されている、または2つ以上のスペースが入力されているなど、エッジケースに注意してください。姓と名だけを解析したい場合は、これでうまくいきます(first_nameが空の文字列に設定されないように、フルネームには常に少なくとも1文字を含める必要があります)。
var full_name_split = "Paul Steve Panakkal".split(" ");
var first_name = full_name_split[0];
var last_name = full_name_split.length > 1 ? full_name_split[full_name_split.length - 1] : null;
このコードを使用してください:
次の行を変更する必要があります:splitFullName("firstName","lastName","fullName");
そして、フォームに正しいフィールドIDが含まれていることを確認します。
function splitFullName(a,b,c){
String.prototype.capitalize = function(){
return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
};
document.getElementById(c).oninput=function(){
fullName = document.getElementById(c).value;
if((fullName.match(/ /g) || []).length ===0 || fullName.substring(fullName.indexOf(" ")+1,fullName.length) === ""){
first = fullName.capitalize();;
last = "null";
}else if(fullName.substring(0,fullName.indexOf(" ")).indexOf(".")>-1){
first = fullName.substring(0,fullName.indexOf(" ")).capitalize() + " " + fullName.substring(fullName.indexOf(" ")+1,fullName.length).substring(0,fullName.substring(fullName.indexOf(" ")+1,fullName.length).indexOf(" ")).capitalize();
last = fullName.substring(first.length +1,fullName.length).capitalize();
}else{
first = fullName.substring(0,fullName.indexOf(" ")).capitalize();
last = fullName.substring(fullName.indexOf(" ")+1,fullName.length).capitalize();
}
document.getElementById(a).value = first;
document.getElementById(b).value = last;
};
//Initial Values
if(document.getElementById(c).value.length === 0){
first = document.getElementById(a).value.capitalize();
last = document.getElementById(b).value.capitalize();
fullName = first + " " + last ;
console.log(fullName);
document.getElementById(c).value = fullName;
}
}
//Replace the ID's below with your form's field ID's
splitFullName("firstName","lastName","fullName");
ソース: http://developers.marketo.com/blog/add-a-full-name-field-to-a-marketo-form/
参加者は、「名」を「ポール」、名字を「スティーブ・パナカル」にしたい場合
var name = "Paul Steve Panakkal" // try "Paul", "Paul Steve"
var first_name = name.split(' ')[0]
var last_name = name.substring(first_name.length).trim()
console.log(first_name)
console.log(last_name)
splitメソッドを使用して、その操作に不要な配列を作成する必要はありません。 JavaScriptのlastIndexOfおよびsubstringメソッドを使用するだけです。
var s = "Paul Steve Panakkal";
var a = s.lastIndexOf(' '); // last occurence of space
var b = s.substring(0, a); // Paul Steve
var c = s.substring(a+1); // Panakkal
const fullName = 'Paul Steve Panakkal'.split(' ');
const lastName = fullName.pop(); // 'Panakkal'
const firstName = fullName.join(' '); // 'Paul Steve'
console.log(firstName);
console.log(lastName);
var fullName = "Paul Steve Panakkal";
Split関数を使用して、フルネームを分割し、配列またはリストに要素を表示するなどの結果を分割できます。
これは、split関数を使用すると発生します。
fullName.split(" ")
["Paul", "Steve", "Panakkal"]
これはどの変数にも保存されません。分割機能を実行して、このように明確に定義された変数に要素を割り当てることができます。
var firstName = fullName.split(" ")[0];
var lastName = fullName.split(" ")[1];
var otherName = fullName.split(" ")[2];
jS split
をスペースで区切り文字として使用します。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split
この方法では、firstNameとlastNameの両方が常に正しい
var names = fullName.split(' ');
if (!names || names.length <= 1) {
firstName = this.name;
lastName = '';
} else {
firstName = names.slice(0, -1).join(' ');
lastName = names.slice(-1).join(' ');
}
姓が名の後のすべての名前であることを意味する場合は、次を使用します。
var name = "Paul Steve Panakkal";
var arrName = name.split(" ");
var firstName = arrName.slice(0, 1).join(' ');
var lastName = arrName.slice(1, arrName.length).join(' ');
var firstName = fullName.split(" ")[0];