首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Javascript中的复杂字符串中删除一些空格

从Javascript中的复杂字符串中删除一些空格
EN

Stack Overflow用户
提问于 2014-04-22 19:43:25
回答 4查看 129关注 0票数 2

我有这些条件:

代码语言:javascript
复制
14/04/22 10:45:20 12.08N 87.65W 15.0 2.9ML Frente a Corinto
14/04/21 11:05:34 12.10N 87.70W 140.0 3.5MC Cerca de Masachapa
14/04/22 09:00:09  12.35N  86.44W  12.4  1.3ML Cerca del volcan Momotombo
14/04/21 23:33:37  12.35N  86.63W   7.1  1.0ML SO de La Paz Centro/Nagarote

我想把它们转换成这样:

代码语言:javascript
复制
14/04/22-10:45:20-12.08N-87.65W-15.0-2.9ML-Frente a Corinto
14/04/21-11:05:34-12.10N-87.70W-140.0-3.5MC-Cerca de Masachapa
14/04/22-09:00:09-12.35N-86.44W-12.4-1.3ML-Cerca del volcan Momotombo
14/04/21-23:33:37-12.35N-86.63W-7.1-1.0ML-SO de La Paz Centro/Nagarote

有人能帮我用Javascript中的正则表达式吗?

谢谢!

PD:编辑。好的,让我特别一点:我想用"-“替换所有的空格,除了字母前面的空格,也要替换单词开头第一次出现前的空格。请看我上面的例子,了解我需要什么。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-22 19:52:12

您可以像这样使用lookahead:

代码语言:javascript
复制
var s = '14/04/21 23:33:37  12.35N  86.63W   7.1  1.0ML SO de La Paz Centro/Nagarote';

var r = s.replace(/ +(?![A-Za-z])/g, '-').replace(/ (?=[a-zA-Z])/, '-');
//=> 14/04/21-23:33:37-12.35N-86.63W-7.1-1.0ML-SO de La Paz Centro/Nagarote
票数 3
EN

Stack Overflow用户

发布于 2014-04-22 19:51:09

这个怎么样?非常简单。它只是假设您只想替换第二个空格,后面跟着一个字母:

代码语言:javascript
复制
"14/04/22 10:45:20 12.08N 87.65W 15.0 2.9ML Frente a Corinto".replace(/\s(?=\d)/g, '-').replace(/ /, '-')
"14/04/22-10:45:20-12.08N-87.65W-15.0-2.9ML-Frente a Corinto"
票数 2
EN

Stack Overflow用户

发布于 2014-04-22 21:14:30

如果regex本身没有按照您的需要工作,那么这段代码对您来说可能是正确的,因为我们使用regex获取包含数字的任何字符串,因为在这种情况下,这是数据中唯一的常量,从这里我们将所有数据存储在一个时态数组中,当完成时,我们生成所需的输出。

代码语言:javascript
复制
function formatString(str) {
    var ss = str.split(' ');
    var listItems = [];
    var listStrings = [];
    var finalStringInt = "";
    var finalStringStr = "";

    for (var t = 0; t < ss.length; t ++) {
        var matchNumer = ss[t].match(/\d+/g);
        if(matchNumer != null){
            listItems.push(ss[t]);
        }else{
            listStrings.push(ss[t]);
        }

    }
    for (var sx = 0; sx < listItems.length; sx++) {
        finalStringInt += listItems[sx]+"-";
    }

    for (var xx = 0; xx < listStrings.length; xx++) {
        finalStringStr += listStrings[xx]+" ";
    }

    return finalStringInt.trim() + finalStringStr.trim(); 
}

var s="14/04/21 23:33:37  12.35N  86.63W   7.1  1.0ML SO de La Paz Centro/Nagarote";
console.log(formatString(s));

产出::

代码语言:javascript
复制
14/04/22-10:45:20-12.08N-87.65W-15.0-2.9ML-Frente a Corinto
14/04/22-09:00:09-12.35N-86.44W-12.4-1.3ML-Cerca del volcan Momotombo 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23228718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档