ฉันมีสตริงที่มีช่องว่างพิเศษทุกครั้งที่มีพื้นที่ว่างมากกว่าหนึ่งช่องฉันก็อยากให้เป็นพื้นที่ ๆ เดียว
ใคร? ฉันพยายามค้นหา google แต่ไม่มีอะไรทำงานให้ฉัน
ขอบคุณ
ฉันมีสตริงที่มีช่องว่างพิเศษทุกครั้งที่มีพื้นที่ว่างมากกว่าหนึ่งช่องฉันก็อยากให้เป็นพื้นที่ ๆ เดียว
ใคร? ฉันพยายามค้นหา google แต่ไม่มีอะไรทำงานให้ฉัน
ขอบคุณ
คำตอบ:
บางสิ่งเช่นนี้
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
คุณสามารถเพิ่มสตริงเพื่อใช้พฤติกรรมเหล่านี้เป็นวิธีการเช่นเดียวกับใน:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
ในตอนนี้คุณสามารถใช้รูปแบบที่สวยงามดังต่อไปนี้เพื่อสร้างสตริงที่คุณต้องการ:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
การใช้นิพจน์ทั่วไปด้วยฟังก์ชันแทนที่ทำหน้าที่หลอกลวง
string.replace(/\s/g, "")
var s = ' a b word word. word, wordword word ';
// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"
// or ES6:
s = s.split(' ').filter(n => n).join(' ');
console.log(s); // "a b word word. word, wordword word"
มันแยกสตริงด้วยช่องว่างลบรายการอาร์เรย์ว่างทั้งหมดออกจากอาร์เรย์ (รายการที่มีมากกว่าหนึ่งช่องว่าง) และรวมคำทั้งหมดอีกครั้งในสตริงด้วยช่องว่างเดียวในระหว่างพวกเขา
ฉันคิดว่าคุณต้องการตัดช่องว่างจากจุดเริ่มต้นและ / หรือจุดสิ้นสุดของสตริง (แทนที่จะลบช่องว่างทั้งหมดหรือไม่
หากเป็นกรณีนี้คุณจะต้องมี regex ดังนี้:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
การดำเนินการนี้จะลบช่องว่างทั้งหมดออกจากจุดเริ่มต้นหรือจุดสิ้นสุดของสตริง หากคุณต้องการตัดแต่งช่องว่างจากท้ายสุดเท่านั้น Regex จะมีลักษณะเช่นนี้แทน:
mystring = mystring.replace(/\s+$/g,' ');
หวังว่าจะช่วย
''
' '
jQuery.trim () ทำงานได้ดี
ฉันรู้ว่าฉันไม่ควรใช้เวทมนตร์ในเรื่องใดเรื่องหนึ่ง แต่ด้วยรายละเอียดของคำถามฉันมักจะขยายออกเป็น
สำหรับสิ่งนี้ฉันใช้รหัสเช่นนี้ (วงเล็บบน regexp แรกมีเพียงเพื่อให้รหัสอ่านง่ายขึ้นอีกเล็กน้อย ... regexps อาจเป็นเรื่องเจ็บปวดเว้นแต่คุณจะคุ้นเคยกับมัน):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
เหตุผลที่ใช้งานได้คือวิธีการใน String-object ส่งคืนวัตถุสตริงที่คุณสามารถเรียกใช้วิธีอื่น (เช่น jQuery และห้องสมุดอื่น ๆ ) วิธีที่กะทัดรัดมากขึ้นในการเขียนโค้ดหากคุณต้องการดำเนินการหลายวิธีในวัตถุเดียวอย่างต่อเนื่อง
var x = "ทดสอบทดสอบทดสอบ" .split ("") .join (""); การแจ้งเตือน (x);
ลองสิ่งนี้
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
ผลลัพธ์จะเป็น
string 1
เกิดอะไรขึ้นที่นี่ก็คือว่ามันจะตัดช่องว่างนอกครั้งแรกที่ใช้แล้วตัดช่องว่างภายในใช้trim()
.replace(/\s+/g, ' ')
หากคุณต้องการ จำกัด ผู้ใช้ให้ช่องว่างในชื่อเพียงแค่สร้างคำสั่ง if และกำหนดเงื่อนไข เหมือนที่ฉันทำ:
$j('#fragment_key').bind({
keypress: function(e){
var key = e.keyCode;
var character = String.fromCharCode(key);
if(character.match( /[' ']/)) {
alert("Blank space is not allowed in the Name");
return false;
}
}
});
แล้วอันนี้ละ?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
เอาท์พุท "my test string with crazy stuff is cool "
อันนี้จะกำจัดแท็บใด ๆ เช่นกัน
\s
แท็บได้รับความคุ้มครองแล้วโดย regex ที่ไม่จำเป็นโดยไม่จำเป็นอาจเขียน/\s+/g
ได้เช่นกัน