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 6
ES6
,最干净的方法是分解数组:

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”
。伟大的兄弟,非常有帮助