如何用点替换逗号

Posted

技术标签:

【中文标题】如何用点替换逗号【英文标题】:how to replace comma with dot 【发布时间】:2016-09-05 07:25:23 【问题描述】:

我的 json 中有逗号值,我希望当我得到这些值时,我将它们放在点中,所以基本上我想将我的逗号值转换为点值..我的 json 看起来和它总是固定的,我会得到val003 处的逗号值。 我知道像 var new = new.replace(/,/g, '.') 这样的事情。但是我如何在此处指定我的 val003 进行转换。提前谢谢你

我的html

<!doctype html>

<html>

<head>

    <meta charset="UTF-8">
    <meta content="utf-8" http-equiv="encoding">
      <div id="below">
        <div id="chart"></div>
    </div>
    <script>
        var jsonURL = 'avb.json';
        var myData = [];
        var fliterdata = [];
        var tempdata = [];
        var selectop = "";
        var selectDate = false;
        var chartType = chartType || 'bar';

        function filterJSON(json, key, value) 
            var result = [];
            for (var foo in json) 
                var extractstr = json[foo][key] ;
                extractstr=String(extractstr);

                if (extractstr.slice(3)== value) 

                    result.push(json[foo]);

               
            
            return result;
        
        function selectValue(d)     
            switch (selectop)  //d object select particular value for Y axis
                case "01":
                    return d.val001;
                    break;
                case "02":
                    return d.val002;
                    break;
                case "03":
                    return d.val003;
                    break;
                case "04":
                    return d.val004;
                    break;
               default:
                    //console.log("default");
                    return d.val001;
            


        

      var line = d3.svg.line()
                .x(function(d) 
                    return xScale(d.date);
                )
                .y(function(d) 
                    return yScale(selectValue(d));
                )
                .interpolate("monotone")
                .tension(0.9);




            yScale.domain([0, d3.max(tempData, function(d) 
                return +selectValue(d);
            )]);

            var svg = d3.select('#chart').append('svg')
                    .attr("width", width + margin.left + margin.right)
                    .attr("height", height + margin.top + margin.bottom)
                    .append("g")
                    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");


            if (chartType == 'bar') 
                svg
                        .selectAll(".bar") //makes bar
                        .data(tempData)
                        .enter().append("rect")
                        .attr("class", "bar")
                        .style("fill", "teal")
                        .attr("x", function(d) 
                            return xScale(d.date);
                        ).attr("width", xScale.rangeBand())
                        .attr("y", function(d) 


                            return yScale(selectValue(d));
                        ).attr("height", function(d) 

                    console.log("as", d.value);
                    return height - yScale(selectValue(d));
                )
            

            if (chartType == 'line') 
                svg.append("path") // Add the line path.
                        .data(tempData)
                        .attr("class", "line")
                        .attr("d", line(tempData));
            

        
        d3.json(jsonURL, function(data) 

            myData = data; //data from json in mydata
           d.val003.replace(",",".")
            myData.forEach(function(d) 

                d.date = new Date(d.date);
                d.date = new Date(d.date + " UTC");

            );

            $("#listbox").on("click", function() 

                var key = $(this).val();
                console.log("key:", key);
                var value = $('#listbox option:selected').text();
                console.log("vaue:", value);

                selectop = String(key);

                selectop = selectop.slice(-2);
                console.log("mydata: ", myData);
                console.log("selectops:", selectop);

                fliterdata = filterJSON(myData, key, value); //selected value from user and picks the whole element that contains that attribute

                console.log("fliterdata: ", fliterdata);
                tempData = fliterdata; //graph made by temp data
                if (selectDate)
                    render(true);
            );
        );

        function selectChartType(type) 
            chartType = type;
            render(true);
        
    </script>
    </body>
</div>
</body>
</html>

【问题讨论】:

.replace(",",".") 您可以与 json 数据 d.val003.replace(",",".") 一起使用 你的意思是我应该在我的“switch case staments”中使用? 你可以在那里使用,如果每个 d.val003 都从那里返回,并且它似乎正在这样工作,试一试 它说未解析的变量 val003..见我上面指定的 你可以为你的代码做一个小提琴然后我可以试一试 【参考方案1】:

试试这个,

return d.val003.toString().replace(",",".");

【讨论】:

我应该在哪里写这个 在你的 switch return 或者你可以放在任何地方当你返回这个值。【参考方案2】:

你可以简单地请求一个 JSon 对象中的值——它几乎可以作为 javascript 中的一个对象。

所以如果你有你的 JSon 对象,让我们称之为 json 你可以简单地做:

var url = *your url*, json;

// retrieve the json object from a URL
$.getJSON(url, function (response) $
    json = response;
);

// reassing val003 with the corrected string
json.val003 = json.val003.replace(",", ".")

我相信这应该可行。

【讨论】:

如果你有 json 对象,只有最后一行很重要。【参考方案3】:

如果要替换的始终是十进制数字中的逗号,则可以在整个 json 字符串中搜索替换序列“number”“comma”“number”,例如:

([0-9]),([0-9])

并将其替换为:

$1.$2

$1 和 $2 是逗号前后找到的数字的占位符。 您可以使用此站点进行在线测试: http://www.regexe.com/

【讨论】:

以上是关于如何用点替换逗号的主要内容,如果未能解决你的问题,请参考以下文章

在输入Javascript中用点替换逗号

Netezza SQL - 如何用条件替换两个逗号之间的字符串

PySpark:如何用逗号指定列作为十进制

如何用逗号分割字符串而不在perl的引号内包含逗号?

如何用逗号而不是空格分割列表

如何用逗号和空格java分割表达式