簡體   English   中英

如何在JavaScript中用空格替換雙2連續引號

[英]How to replace a double 2 consecutive quotes by a space in JavaScript

我有一個以以下格式表示經度/緯度的字符串:

dd°mm的s''W(注意ss后的2個單引號)。

我正在使用以下代碼以十進制表示形式轉換字符串:

function dmsTodegrees(val) {
    var s = val.replace('°', ' ');
    s = s.replace("'", ' ');
    s = s.replace("''", ' ');
    var tokens = s.split(' ');
    var result = Number.parseFloat(tokens[0]) + Number.parseFloat(tokens[1]) / 60 + Number.parseFloat(tokens[2]) / 3600;
    if (tokens[3] === 'W' || tokens[3] === 'S') result = -result;
    return result;
}

但是,似乎s = s.replace("''", ' '); 並沒有達到預期的效果,並且兩個單引號(')不會被空格代替。 不知道我在做什么錯。

請注意,我在這里省略了所有錯誤處理。

您可以使用/'{1,2}/g替換字符串中的所有'。 如果您不關心數字並希望替換所有單引號,則可以使用/'+/g

 function dmsTodegrees(val) { var s = val.replace('°', ' '); s = s.replace(/'{1,2}/g, ' '); return s; } console.log(dmsTodegrees("dd°mm'ss''W")); 

因此,您嘗試用空格替換°''' ,以便用空格分割字符串。 為何不直接用空格替換而不是用空格替換字符串並用空格分割字符串?

...
var tokens = val.split(/°|'{1,2}/);
...

它是這樣的:

"12.34°56.78'90.12''W".split(/°|'{1,2}/)
=> (4) ["12.34", "56.78", "90.12", "W"]

對於這些行:

s = s.replace("'", ' ');
s = s.replace("''", ' ');

第一個使用每個“'”並將其替換為空格。 所以第二個永遠不會在一起找到兩個引號。

...替換僅在發現的第一件事上起作用。

所以

"1,2,3,'',4,'',5,''".replace("'", " ").replace("''", ' ')

給你

"1,2,3, ',4, ,5,''"

檢查@Dij的答案以獲得更好的方法。

我建議在單引號內使用單引號( ' )和轉義序列( \\' )來替換功能

 function dmsTodegrees(val) { var s = val.replace('°', ' '); s = s.replace('\\'', ' '); s = s.replace('\\'\\'', ' '); console.log(s); var tokens = s.split(' '); var result = Number.parseFloat(tokens[0]) + Number.parseFloat(tokens[1]) / 60 + Number.parseFloat(tokens[2]) / 3600; if (tokens[3] === 'W' || tokens[3] === 'S') result = -result; return result; } console.log(dmsTodegrees("20°10'30''4")); 

您需要先替換兩個單引號,然后再替換一個單引號。 如果您先替換單引號,那么即使兩個單引號也被兩個空格代替(您的情況就是如此)。

s = s.replace("''"," ");
s = s.replace("'"," ");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM