Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript重新排列文本(字符串)_Javascript - Fatal编程技术网

使用javascript重新排列文本(字符串)

使用javascript重新排列文本(字符串),javascript,Javascript,这是一个简单的问题,但我只是在学习javascript。 我有短信史密斯,约翰-PPP。我怎样才能把它重新安排成约翰·史密斯? 谢谢 基本上,您将匹配原始字符串中的模式,提取感兴趣的片段并重新排列它们。一个常用的工具是 在您的示例中: var s = "Smith, John - PPP"; var r = s.replace(/^([^,]+), ?([^ ]+).*$/, "$2 $1"); r将保存替换的字符串 警告: 正则表达式是一个有用的工具。它们不是灵丹妙药。仔细检查你将要使用的工

这是一个简单的问题,但我只是在学习javascript。 我有短信史密斯,约翰-PPP。我怎样才能把它重新安排成约翰·史密斯?
谢谢

基本上,您将匹配原始字符串中的模式,提取感兴趣的片段并重新排列它们。一个常用的工具是

在您的示例中:

var s = "Smith, John - PPP";
var r = s.replace(/^([^,]+), ?([^ ]+).*$/, "$2 $1");
r将保存替换的字符串

警告:

正则表达式是一个有用的工具。它们不是灵丹妙药。仔细检查你将要使用的工具是否适用于手头的任务螺丝刀也是一种有用的工具,除非你试图用它把钉子钉进墙上

特别是,如果不使用更强大的工具,针对半结构化数据read:html、xml的词汇表示的模式匹配通常是不明智的。如果您有疑问,请查看公认的答案。

尝试使用和方法


请注意,此示例仅适用于当前任务,因为OP没有分隔符或除了简单字符串以外的任何其他内容

拆分和连接字符串可以很容易地使用库作为JQuery,但javascript允许以这种方式从基础开始

史密斯,约翰-PPP.斯普利特,'[1]

拆分后,您可以将字符串部分作为任意数组使用:

var name = 'Smith, John - PPP';
alert(name.split(' ')[1]+' '+name.split(' ')[0].split(',')[0]); //Will alert "John Smith"

祝你好运。

如果字符串的格式是常量,那么使用split可以快速解决:

var data = 'Smith, John - PPP';
data = data.split(' - ')[0].split(', ');

var result = data[1] + ' ' + data[0];
console.log(result);

这是对@ToKeN解决方案的扩展。

您的答案仅适用于名字长度为4个字符的情况。请使用其他名称:var str=Smith,Johnista-PPP;您将看到。@ToKeN:尝试将名字改为Johnny或其他超过4个字母的名称,您的代码将失败。这就是问题所在。@AndersG是的,我知道,我专门用当前的示例编写了它。这正是问题所在:它是一个集合格式的示例。不要以为这就是他必须处理的全部数据;太快了!谢谢你这么快的重播。它部分有效,唯一的问题是我想删除-PPP。我添加了另一个替换,var r=s.replace/^[^,]+,?[^]+/,$2$1.replace-PPP,它成功了。再次感谢!你不需要做替换。只需在正则表达式的末尾添加一个.*:s.replace/^[^,]+,?[^]+.*/,$2$1;
var data = 'Smith, John - PPP';
data = data.split(' - ')[0].split(', ');

var result = data[1] + ' ' + data[0];
console.log(result);