2016-07-13 47 views
0

我從來沒有真正完成過JavaScript。我試圖格式化名稱(例如John Doe應該顯示爲J.Doe)。我寫了代碼從cookie中獲取全名,但我不知道如何以這種方式進行格式化。獲取字符串中的第一個字母並保持其他字符相同

這是我現在的代碼;它只顯示全名:

var cookieParts = document.cookie.split(";"); 
var userName = ""; 
for (var i = 0; i < cookieParts.length; i++) { 
    var name_value = cookieParts[i], 
    equals_pos = name_value.indexOf("="), 
    name  = unescape(name_value.slice(0, equals_pos)).trim(), 
    value  = unescape(name_value.slice(equals_pos + 1)); 
    if(name == "fullName"){ 
     userName = value.substring(0,1); 
    } 
} 

有人可以幫我嗎?謝謝。

回答

0
function formatName(fullName){ 

    var names = fullName.split(' '); 
    for(var i = 0, n = names.length-1; i < n; i++) 
    names[i] = names[i][0]; 
    return names.join('. ') ; 

} 

console.log(formatName("Oscar Fingal O'Flahertie Wills Wilde")); // "O. F. O. W. Wilde" 
+0

請編輯更多的信息。僅限代碼和「嘗試這個」的答案是不鼓勵的,因爲它們不包含可搜索的內容,也不解釋爲什麼有人應該「嘗試這個」。我們在這裏努力成爲知識的資源。 –

1

您可以使用正則表達式並用所需的樣式替換。

console.log('Doe'.replace(/([A-Z])\w*(?=\s)/g, '$1.')); 
 
console.log('John Doe'.replace(/([A-Z])\w*(?=\s)/g, '$1.')); 
 
console.log('John John Doe'.replace(/([A-Z])\w*(?=\s)/g, '$1.'));

如果您只想更換一次出現,則忽略g(global)標誌。

console.log('Doe'.replace(/([A-Z])\w*(?=\s)/, '$1.')); 
 
console.log('John Doe'.replace(/([A-Z])\w*(?=\s)/, '$1.')); 
 
console.log('John John Doe'.replace(/([A-Z])\w*(?=\s)/, '$1.'));

0

根據你的代碼提供

var cookieParts = document.cookie.split(";"); 
var userName = ""; 
for (var i = 0; i < cookieParts.length; i++) { 
    var name_value = cookieParts[i], 
    equals_pos = name_value.indexOf("="), 
    name  = unescape(name_value.slice(0, equals_pos)).trim(), 
    value  = unescape(name_value.slice(equals_pos + 1)); 
    if(name == "fullName"){ 
     userName = value.split(" "); 
     userName[0]=userName[0].substring(0,1)+'.'; 
     userName = userName.join(" "); 
     alert(userName); 
    } 
} 
1

我推斷NAME_VALUE看起來像 「名字=李四」。如果是這樣的話,你可以這樣做:

name_parts = name_value.split("="); 
first_last = name_parts[1].split(" "); // assumes no spaces other than 1 between first and last name. 

first_initial_last = first_last[0].substring(0, 1) + '. ' + first_last[1]; 
相關問題