Javascript 如何拆分字符串,在特定字符处断开?
我有这根绳子Javascript 如何拆分字符串,在特定字符处断开?,javascript,string-split,Javascript,String Split,我有这根绳子 'john smith~123 Street~Apt 4~New York~NY~12345' 使用JavaScript,最快的解析方法是什么 var name = "john smith"; var street= "123 Street"; //etc... 使用JavaScript的函数: var input = 'john smith~123 Street~Apt 4~New York~NY~12345'; var fields = input.split('~');
'john smith~123 Street~Apt 4~New York~NY~12345'
使用JavaScript,最快的解析方法是什么
var name = "john smith";
var street= "123 Street";
//etc...
使用JavaScript的函数:
var input = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = input.split('~');
var name = fields[0];
var street = fields[1];
// etc.
const first = (list) => list[0];
您需要研究JavaScript或,因为这不是一项真正适合jQuery的任务。您不需要jQuery
var s = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = s.split(/~/);
var name = fields[0];
var street = fields[1];
最简单的方法是:
var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]
var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];
比如:
var address = theEncodedString.split(/~/)
var name = address[0], street = address[1]
var divided = str.split("/~/");
var name=divided[0];
var street = divided[1];
可能是最简单的即使这不是最简单的方法,您也可以这样做:
var addressString = "~john smith~123 Street~Apt 4~New York~NY~12345~",
keys = "name address1 address2 city state zipcode".split(" "),
address = {};
// clean up the string with the first replace
// "abuse" the second replace to map the keys to the matches
addressString.replace(/^~|~$/g).replace(/[^~]+/g, function(match){
address[ keys.unshift() ] = match;
});
// address will contain the mapped result
address = {
address1: "123 Street"
address2: "Apt 4"
city: "New York"
name: "john smith"
state: "NY"
zipcode: "12345"
}
使用解构更新ES2015
const [address1, address2, city, name, state, zipcode] = addressString.match(/[^~]+/g);
// The variables defined above now contain the appropriate information:
console.log(address1, address2, city, name, state, zipcode);
// -> john smith 123 Street Apt 4 New York NY 12345
如果找到拆分器,则仅 分开 否则返回相同的字符串
const [address1, address2, city, name, state, zipcode] = addressString.match(/[^~]+/g);
// The variables defined above now contain the appropriate information:
console.log(address1, address2, city, name, state, zipcode);
// -> john smith 123 Street Apt 4 New York NY 12345
扎克说得对。。使用他的方法,你还可以制作一个看似“多维”的数组。。我在JSFIDLE上创建了一个快速示例
您可以使用
split
拆分文本
或者,您也可以使用匹配
,如下所示
var str='john smith~123 Street~Apt 4~纽约~NY~12345';
matches=str.match(/[^~]+/g);
console.log(匹配项);
文件。编写(匹配)代码>根据ECMAScript 6ES6
,最干净的方法是分解数组:
const input='john smith~123 Street~Apt 4~纽约~NY~12345';
const[name,street,unit,city,state,zip]=input.split(“~”);
console.log(名称);//史密斯
控制台。原木(街道);//123街
控制台日志(单位);//Apt 4
console.log(城市);//纽约
console.log(状态);//纽约
console.log(zip);//12345使用此代码--
这个string.split(“~”[0]代码>完成任务
资料来源:
使用咖喱和功能组合的另一种功能方法。
所以第一件事就是分裂函数。我们想把这个“约翰·史密斯~123街~Apt 4~纽约~NY~12345”
变成这个[“约翰·史密斯”、“123街”、“Apt 4”、“纽约”、“纽约”、“12345”]
现在我们可以使用专门的splitByTilde
函数。例如:
splitByTilde("john smith~123 Street~Apt 4~New York~NY~12345") // ["john smith", "123 Street", "Apt 4", "New York", "NY", "12345"]
要获取第一个元素,我们可以使用list[0]
操作符。让我们先构建一个函数:
var input = 'john smith~123 Street~Apt 4~New York~NY~12345';
var fields = input.split('~');
var name = fields[0];
var street = fields[1];
// etc.
const first = (list) => list[0];
算法是:按冒号拆分,然后得到给定列表的第一个元素。因此,我们可以组合这些函数来构建最终的getName
函数。使用reduce
构建compose
函数:
const compose = (...fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value);
现在使用它来编写splitByTilde
和first
函数
const getName = compose(first, splitByTilde);
let string = 'john smith~123 Street~Apt 4~New York~NY~12345';
getName(string); // "john smith"
由于逗号分隔问题与此问题重复,因此在此添加此问题
如果要拆分某个字符,并同时处理该字符后面可能出现的额外空格(通常使用逗号),可以使用替换,然后使用拆分,如下所示:
var items = string.replace(/,\s+/, ",").split(',')
尝试使用纯Javascript
JavaScript:将字符串转换为数组JavaScript拆分
var str=“本javascript教程字符串拆分方法示例tutsmake。”
var result=str.split('-');
控制台日志(结果);
document.getElementById(“show”).innerHTML=result代码>
如何拆分字符串,在javascript中的特定字符处断开?
split()
方法在JavaScript中用于将字符串转换为数组。
它接受一个可选参数,作为一个字符,用于拆分。在你的情况下(~)
如果跳过splitOn,它将简单地将字符串放在数组的第0个位置
如果splitOn只是一个“”,那么它将转换单个字符的数组
因此,在你的情况下:
var arr = input.split('~');
将在arr[0]
获取名称,在arr[1]
获取街道
您可以在以下位置阅读更详细的说明:
这比不上解构答案,但鉴于这个问题是12年前提出的,我决定给它一个12年前同样有效的答案
function Record(s) {
var keys = ["name", "address", "address2", "city", "state", "zip"], values = s.split("~"), i
for (i = 0; i<keys.length; i++) {
this[keys[i]] = values[i]
}
}
var record = new Record('john smith~123 Street~Apt 4~New York~NY~12345')
record.name // contains john smith
record.address // contains 123 Street
record.address2 // contains Apt 4
record.city // contains New York
record.state // contains NY
record.zip // contains zip
功能记录{
变量键=[“名称”、“地址”、“地址2”、“城市”、“州”、“邮编”],值=s.split(“~”),i
对于(i=0;i)您不需要将正则表达式添加到此简单替换中。这只会使它变得更慢。您可以将其更改为简单字符串替换的引号。首先,我们有一个由“~”符号分隔的字符串和一组键
。第二个替换函数使用[^~]+
来匹配每个不同的部分(即“123 Street”、“Apt 4”等)调用每个部分的函数,并将其作为参数传递。在每次运行时,该函数从keys数组中获取第一个键(也使用array.unshift将其删除),并将键和部分分配给address对象。这对我来说很有效!str.split()
在Firefox中不起作用,但在Chrome和Firefox中都起作用。@Sandeep,不,str.split();
。您也可以跳过一项:const[name,unit
而不是“John~Smith”
。伟大的兄弟,非常有帮助