2014-07-25 10 views
6

के साथ डॉट और डॉट के साथ कॉमा को प्रतिस्थापित करना मैं डॉट्स के लिए कॉमा और कॉमा के लिए सभी बिंदुओं को प्रतिस्थापित करने की कोशिश कर रहा हूं और यह सोच रहा था कि ऐसा करने के लिए सबसे अच्छा अभ्यास क्या है। यदि मैं अनुक्रमिक रूप से ऐसा करता हूं, तो चरण एक-दूसरे को ओवरराइट कर देंगे।अल्पविराम

उदाहरण के लिए: 1,234.56 (अल्पविराम बदलने के बाद) -> 1.234.56 (डॉट्स की जगह के बाद) -> 1,234,56

कौन सा स्पष्ट रूप से नहीं है कि मैं क्या चाहता हूँ।

मुझे लगता है कि एक विकल्प पात्रों पर विभाजित है और बाद में विपरीत चरित्र का उपयोग कर जुड़ रहा है। क्या ऐसा करने का कोई आसान/बेहतर तरीका है?

+0

उपयोग कर सकते हैं कृपया साथ काम करने के लिए एक उदाहरण दें। – erosman

+0

आपका क्या मतलब है? एक उदाहरण बस 1,234.56 से 1.234,56 बदल रहा होगा? –

+0

मैं देखता हूं ... मुझे यकीन नहीं था कि आप इसे कैसे समाप्त करना चाहते थे ... वैसे भी ऐसा लगता है कि आपको पहले ही जवाब मिल गया है :) – erosman

उत्तर

13

आप एक कॉलबैक

"1,234.56".replace(/[.,]/g, function(x) { 
    return x == ',' ? '.' : ','; 
}); 

FIDDLE

इस्तेमाल कर सकते हैं आप दो से अधिक पात्रों को बदलने के लिए जा रहे हैं, तो आप एक सुविधा समारोह एक मानचित्र का उपयोग करने के लिए प्रतिस्थापन बना सकते हैं

function swap(str, swaps) { 
    var reg = new RegExp('['+Object.keys(swaps).join('')+']','g'); 
    return str.replace(reg, function(x) { return swaps[x] }); 
} 

var map = { 
    '.':',', 
    ',':'.' 
} 

var result = swap("1,234.56", map); // 1.234,56 

FIDDLE

+1

अच्छा कॉलबैक। +1 –

+1

पूरी तरह से कमाल! – Zevan

+2

+1। लेकिन इसके बजाय: '/ (\। |,)/G', मैं केवल अनावश्यक विकल्प और कैप्चर समूह को खत्म करने के लिए उपयोग करता हूं:' /[.,]/ g'। – ridgerunner

3

कर में प्लेसहोल्डर पाठ का उपयोग कर चरणों:

var foo = '1,234.56'; 
foo = foo 
    .replace(',', '~comma~') 
    .replace('.', '~dot~') 
    .replace('~comma~', '.') 
    .replace('~dot~', ',') 
+0

@ एडेनो का जवाब बेहतर है, वास्तव में। –

11

आप निम्न कर सकता है:

var str = '1,234.56'; 
var map = {',':'.','.':','}; 
str = str.replace(/[,.]/g, function(k) { 
    return map[k]; 
}); 

Working Demo

+1

अच्छा! मैं @adeneo उत्तर के साथ कॉलबैक का सुझाव देने वाला था, लेकिन प्रतिस्थापन से मेल खाने के लिए किसी ऑब्जेक्ट का उपयोग करना बहुत आसान है। – Adam

+1

यह वास्तव में अच्छा है: डी – Zevan

+0

यदि आप वास्तव में इसे बनाना आसान बनाना चाहते हैं, तो आप एक ऐसा फ़ंक्शन बना सकते हैं जो एक स्ट्रिंग और नक्शा स्वीकार करता है और रेगेक्स गतिशील रूप से उत्पन्न करता है, जैसे -> ** http: // jsfiddle। शुद्ध/7rf6C/1/**। यदि आपको वैसे भी रेगेक्स को हार्डकोड करना है, तो नक्शा वास्तव में कोई समझ नहीं लेता है। – adeneo

2

आप पाश के लिए एक इस्तेमाल कर सकते हैं। कुछ की तरह: http://jsfiddle.net/AyLQt/1/

हालांकि कहने के लिए है, @ adenoeo का जवाब जिस तरह से अधिक चालाक है:

var txt = document.getElementById("txt"); 
var newStr = ""; 
for (var i = 0; i < txt.innerHTML.length; i++){ 
    var char = txt.innerHTML.charAt(i); 
    if (char == "."){ 
     char = ","; 
    }else if (char == ","){ 
     char = "."; 
    } 
    newStr += char; 
} 
txt.innerHTML = newStr; 

यहाँ एक बेला है डी

0

जावास्क्रिप्ट में आप

var value = '1.000.000,55'; 
var splitValue = value.split('.'); 
for (var i = 0; i < splitValue.length; i++) { 
    var valPart = splitValue[i]; 
    var newValPart = valPart.replace(',', '.'); 
    splitValue[i] = newValPart; 
} 
var newValue = splitValue.join(','); 
console.log(newValue); 
संबंधित मुद्दे