2010-10-13 39 views
156

Tôi có chuỗi sau:Remove dấu phẩy hàng đầu từ một chuỗi

",'first string','more','even more'" 

Tôi muốn chuyển đổi này vào một mảng nhưng rõ ràng đây là không hợp lệ do thừa dấu phẩy đầu tiên. Làm thế nào tôi có thể loại bỏ các dấu phẩy đầu tiên từ chuỗi của tôi và làm cho nó một mảng hợp lệ?

Tôi muốn kết thúc với một cái gì đó như thế này:

myArray = ['first string','more','even more'] 
+39

Đơn giản chỉ cần sử dụng 'myString.slice (1);' –

+0

@NikhilBenKuruvilla này sẽ loại bỏ bất kỳ ký tự ngay cả khi nó không phải là một dấu phẩy. Đây là lần đầu tiên xóa ký tự dấu phẩy chỉ http://stackoverflow.com/a/39047793/696535 – Pawel

+0

Bản sao có thể có của [Xóa ký tự đầu tiên của chuỗi trong Javascript] (https://stackoverflow.com/questions/4564414/delete-first -character-of-a-string-in-javascript) –

Trả lời

272

Để loại bỏ các ký tự đầu tiên bạn sẽ sử dụng:

myOriginalString = ",'first string','more','even more'"; 
myString = myOriginalString.substring(1); 

Tôi không chắc chắn đây sẽ là kết quả mà bạn đang tìm kiếm mặc dù bởi vì bạn vẫn sẽ cần phải chia nó để tạo ra một mảng với nó. Có thể một cái gì đó như:

myString = myOriginalString.substring(1); 
myArray = myString.split(','); 

Hãy nhớ rằng 'ký tự sẽ là một phần của mỗi chuỗi được tách ra ở đây.

7
var s = ",'first string','more','even more'"; 

var array = s.split(',').slice(1); 

Giả sử chuỗi bạn bắt đầu bằng thực tế là một chuỗi, giống như bạn đã nói và không phải là Chuỗi của chuỗi.

83

Trong trường hợp cụ thể này (có luôn luôn là một nhân vật duy nhất vào lúc bắt đầu bạn muốn loại bỏ), bạn sẽ muốn:

str.substring(1) 

Tuy nhiên, nếu bạn muốn để có thể phát hiện nếu dấu phẩy là có và loại bỏ nó nếu nó là, sau đó một cái gì đó như:

if (str.substring(0, 1) == ',') { 
    str = str.substring(1); 
} 
+8

+1 cho điều kiện –

+1

+1 cho điều kiện là tốt. Nó luôn luôn tốt hơn để giả sử một dấu phẩy có thể không có. – JoeMoe1984

+0

Đây là câu trả lời hay hơn và phải là câu trả lời được chấp nhận. –

3

Để bật một chuỗi thành một mảng tôi thường sử dụng split()

> var s = ",'first string','more','even more'" 
> s.split("','") 
[",'first string", "more", "even more'"] 

Đây gần như là những gì bạn muốn. Bây giờ bạn chỉ phải tước hai đầu và ký tự cuối cùng:

> s.slice(2, s.length-1) 
"first string','more','even more" 

> s.slice(2, s.length-2).split("','"); 
["first string", "more", "even more"] 

Để trích xuất một chuỗi con từ một chuỗi Tôi thường sử dụng slice() nhưng substr()substring() cũng thực hiện công việc.

2

Giả sử chuỗi được gọi là mystr:

// Strip start and end quotation mark and possible initial comma 
myStr=myStr.replace(/^,?'/,'').replace(/'$/,''); 

// Split stripping quotations 
myArray=myStr.split("','"); 

Lưu ý rằng nếu một chuỗi có thể thiếu trong danh sách mà không hề có dấu ngoặc kép của nó hiện tại và bạn muốn một chỗ trống ở vị trí tương ứng trong mảng, bạn sẽ cần phải viết phân tách thủ công cho một giải pháp mạnh mẽ.

4
var s = ",'first string','more','even more'"; 
s.split(/'?,'?/).filter(function(v) { return v; }); 

Kết quả trong:

["first string", "more", "even more'"] 

chia đầu tiên bằng dấu phẩy có thể được bao bọc bởi dấu nháy đơn,
sau đó lọc không truthy (trống) phần ra.

1

Bạn có thể sử dụng trực tiếp thay thế chức năng trên javascript với regex hoặc xác định một chức năng giúp đỡ như trong php LTRIM (trái) và rtrim (bên phải):

1) Với thay thế:

var myArray = ",'first string','more','even more'".replace(/^\s+/, '').split(/'?,?'/); 

2) chức năng Trợ giúp:

if (!String.prototype.ltrim) String.prototype.ltrim = function() { 
    return this.replace(/^\s+/, ''); 
}; 
if (!String.prototype.rtrim) String.prototype.rtrim = function() { 
    return this.replace(/\s+$/, ''); 
}; 
var myArray = ",'first string','more','even more'".ltrim().split(/'?,?'/).filter(function(el) {return el.length != 0});; 

bạn có thể làm và những thứ khác để thêm tham số cho hàm giúp đỡ với những gì bạn muốn thay thế các char vv

4

Một lớp lót

str = str.replace(/^,/, ''); 

Tôi sẽ quay lại.

0
s=s.substring(1); 

Tôi thích giữ nội dung đơn giản.

0

này sẽ loại bỏ các dấu phẩy dấu và không gian

var str = ",'first string','more','even more'"; 
var trim = str.replace(/(^\s*,)|(,\s*$)/g, ''); 
Các vấn đề liên quan