2012-11-30 48 views
11

Làm cách nào để xóa dòng cuối cùng "\ n" khỏi chuỗi, nếu tôi không biết chuỗi đó sẽ lớn như thế nào?Xóa dòng cuối cùng khỏi chuỗi

var tempHTML = content.document.body.innerHTML; 
var HTMLWithoutLastLine = RemoveLastLine(tempHTML); 

function RemoveLastLine(tempHTML) 
{ 
    // code 
} 
+0

câu/dòng, không phải từ – user1534664

+0

Xác định * dòng * xin vui lòng. – moonwave99

+0

dòng cuối cùng là gì ?? là hằng số hoặc có thể thay đổi ... – Scorpio

Trả lời

17

Hãy thử:

if(x.lastIndexOf("\n")>0) { 
    return x.substring(0, x.lastIndexOf("\n")); 
} else { 
    return x; 
} 
+0

Cảm ơn. Thử nghiệm và nó hoạt động. – user1534664

+0

Không hoạt động nếu 'x' chứa một dòng đơn (có thể không phải là một vấn đề tùy thuộc vào nhu cầu chính xác). –

+0

@JulienRoyer Bạn nói đúng. Tôi đã cập nhật câu trả lời của mình. Btw +1 cho câu trả lời của bạn. – rekire

9

Bạn có thể sử dụng một biểu thức chính quy (được điều chỉnh tùy thuộc vào những gì bạn có nghĩa là bởi "dòng cuối cùng"):

return x.replace(/\r?\n?[^\r\n]*$/, ""); 
0

Trong trường hợp cụ thể của bạn chức năng thực sự có thể trông giống như:

function(s){ 
    return i = s.lastIndexOf("\n") 
    , s.substring(0, i) 
} 

Mặc dù có lẽ bạn cũng không muốn có khoảng trắng ở cuối; trong trường hợp này một cách đơn giản thay thế có thể làm việc tốt:

s.replace(/s+$/, '') 

Hãy ghi nhớ tuy nhiên rằng các phiên bản mới của Javascript (ES6 +) cung cấp cách viết tắt để làm điều này với built-in chức năng nguyên mẫu (trim, trimLeft, trimRight)

s.trimRight() 

Chúc mừng!

0

Một regex sẽ làm điều đó. Đây là đơn giản nhất:

string.replace(/\n.*$/, '') 

See regex101 for how it works

\n phù hợp với ngắt dòng cuối cùng trong chuỗi

.* trận đấu bất kỳ ký tự, giữa zero và không giới hạn thời gian (trừ Terminators dòng). Vì vậy, các công trình này hay không có nội dung trên dòng cuối cùng

$ để phù hợp với sự kết thúc của chuỗi

Các vấn đề liên quan