ฉันพยายามดึงทุกอย่างก่อนเครื่องหมาย ',' คอมม่า ฉันจะทำสิ่งนี้ใน JavaScript หรือ jQuery ได้อย่างไร ฉันพยายามและไม่ทำงาน ..
1345 albany street, Bellevue WA 42344
ฉันต้องการคว้าที่อยู่
var streetaddress= substr(addy, 0, index(addy, '.'));
ฉันพยายามดึงทุกอย่างก่อนเครื่องหมาย ',' คอมม่า ฉันจะทำสิ่งนี้ใน JavaScript หรือ jQuery ได้อย่างไร ฉันพยายามและไม่ทำงาน ..
1345 albany street, Bellevue WA 42344
ฉันต้องการคว้าที่อยู่
var streetaddress= substr(addy, 0, index(addy, '.'));
คำตอบ:
var streetaddress= addy.substr(0, addy.indexOf(','));
แม้ว่ามันจะไม่ใช่สถานที่ที่ดีที่สุดสำหรับข้อมูลที่ชัดเจนว่าแต่ละวิธีทำอย่างไร ( เครือข่ายนักพัฒนา mozillaดีกว่าสำหรับนั้น) w3schools.comเป็นสิ่งที่ดีสำหรับการแนะนำให้คุณรู้จักกับไวยากรณ์
substr
ไม่แนะนำ ควรใช้substring
แทนที่จะเป็นdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/ …
var streetaddress = addy.split(',')[0];
ลองนี้:
streetaddress.substring(0, streetaddress.indexOf(','));
//split string into an array and grab the first item
var streetaddress = addy.split(',')[0];
นอกจากนี้ฉันขอแนะนำให้ตั้งชื่อตัวแปรด้วยอูฐ (streetAddress) เพื่อให้อ่านง่ายขึ้น
addy.split(',', 1)[0]
: ดูdeveloper.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
const [streetAddress,] = addy.split(',');
สิ่งนี้มีประโยชน์สำหรับกรณีที่คุณต้องการค่ามากกว่าหนึ่งค่าเช่น: let [callerIdName, callerId] = callerIdString.split('<');
(รูปแบบ callerIdString ดั้งเดิมคือ MCMULLIN, PARKER <+ 1XXXXXXXXXXXXXX)
เกือบจะเหมือนกันกับคำตอบของ David G แต่ไม่มีฟังก์ชั่นนิรนามหากคุณไม่รู้สึกอยากรวมไว้ด้วย
s = s.substr(0, s.indexOf(',') === -1 ? s.length : s.indexOf(','));
ในกรณีนี้เราใช้ประโยชน์จากข้อเท็จจริงที่ว่าอาร์กิวเมนต์ที่สองsubstr
คือความยาวและเรารู้ว่าสตริงย่อยของเราเริ่มต้นที่ 0
คำตอบยอดนิยมไม่ใช่คำตอบทั่วไปเนื่องจากพฤติกรรมไม่พึงประสงค์หากสตริงไม่มีอักขระที่คุณต้องการ
หากคุณต้องการพฤติกรรมที่ถูกต้องในกรณีทั่วไปให้ใช้วิธีนี้หรือวิธีของ David G ไม่ใช่คำตอบที่ดีที่สุด
วิธีการ regex และการแยกจะทำงานเช่นกัน แต่อาจช้ากว่า / มากเกินไปสำหรับปัญหาเฉพาะนี้
shift()
นอกจากนี้คุณยังสามารถใช้
var streetaddress = addy.split(',').shift();
ตามเอกสาร MDN Web:
shift()
วิธีเอาแรกองค์ประกอบจากอาร์เรย์และผลตอบแทนว่าองค์ประกอบที่ถูกลบ วิธีนี้จะเปลี่ยนความยาวของอาร์เรย์
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
var streetaddress = addy.substr(0, addy.indexOf('.'));
(คุณควรอ่านบทแนะนำจาวาสคริปต์โดยเฉพาะส่วนที่เกี่ยวกับฟังก์ชั่น String )
หากคุณต้องการส่งคืนสตริงดั้งเดิมไม่ถูกแตะต้องหากไม่มีอักขระการค้นหาคุณสามารถใช้ฟังก์ชันที่ไม่ระบุชื่อ (การปิด):
var streetaddress=(function(s){var i=s.indexOf(',');
return i==-1 ? s : s.substr(0,i);})(addy);
สิ่งนี้สามารถทำให้เป็นเรื่องทั่วไปมากขึ้น:
var streetaddress=(function(s,c){var i=s.indexOf(c);
return i==-1 ? s : s.substr(0,i);})(addy,',');
var newString = string.substr(0,string.indexOf(','));
คุณสามารถใช้ regex เพราะมันจะทำให้คุณสตริงถ้ามันตรงกับความต้องการ รหัสจะเป็นดังนี้:
const address = "1345 albany street, Bellevue WA 42344";
const regex = /[1-9][0-9]* [a-zA-Z]+ [a-zA-Z]+/;
const matchedResult = address.match(regex);
console.log(matchedResult[0]); // This will give you 1345 albany street.
ดังนั้นการทำลายรหัสลง [1-9][0-9]*
โดยทั่วไปหมายถึงตัวเลขแรกไม่สามารถเป็นศูนย์และต้องเป็นตัวเลขระหว่าง1-9
และหมายเลขถัดไปสามารถเป็นตัวเลขใดก็ได้จาก0-9
และสามารถเกิดขึ้นได้ศูนย์หรือมากกว่าครั้งที่บางครั้งจำนวนนั้นเป็นเพียงหนึ่งหลักแล้วมันตรงกับช่องว่าง [a-zA-Z]
โดยทั่วไปจะจับคู่ตัวพิมพ์ใหญ่ทั้งหมดกับตัวอักษรขนาดเล็กและต้องเกิดขึ้นหนึ่งครั้งหรือมากกว่าและจะเกิดขึ้นซ้ำ
คุณสามารถใช้Azleเพื่อรับสตริงย่อยก่อน :
str = 'This is how we go to the place!'
az.get_everything_before(str, 'place')
ผล : นี่คือวิธีที่เราไป
str = 'This is how we go to the place!'
az.get_everything_after(str, 'go')
ผล : ไปยังสถานที่!
และระหว่าง :
str = 'This is how we go to the place!'
az.get_everything_between(str, 'how', 'place')
ผลลัพธ์ : เราไปที่
addy.split(',', 1)[0]