带有可选字符串的Java输入

时间:2013-09-17 08:33:02

标签: java string input int

我目前正在进行一项输入,其中输入将来自文本文件。 我遇到的问题是弄清楚如何收集输入但仍然将其分解并确保我拥有所有相关数据。

输入是:

输入1: 1本书12.49 1.99的1张音乐CD 1个巧克力棒,0.85

输入2: 1个进口的巧克力盒装于10.00 1瓶47.50的进口香水

输入3: 一瓶进口的香水在27.99 在18.99的1瓶香水 一包头痛药在9.75 1盒11.25的进口巧克力

我需要保留第一个号码,无论是进口号码,名称(即香水瓶)和价格。任何建议都是可爱的我确定正则表达式是答案,但我不太确定如何使它如此导致如果导入,其余的将仍然是相同的。

1 个答案:

答案 0 :(得分:0)

好吧,你可以自己做,也可以懒惰并使用这段代码:

var string = "1 book at 12.49 1 music CD at 14.99 1 chocolate bar at 0.85";

var data = getArray(string);

console.debug(data);

function getArray(string){
    //prepare the string
    //adding terminators (";")
    string = string.replace(/(at) ([0-9]*).([0-9]*)/g,"$1 $2.$3;");
    string = string.replace(/; /g,";"); //remove whitespace after terminators
    string = string.substring(0,string.length-1); //remove last terminator

    var split = string.split(";"); //split it up
    var data = new Array();

    //loop through objects
    for(var i=0;i<split.length;i++){
        data[i] = new Array();

        var subData = split[i].split(" ");

        data[i]['count'] = subData[0]; //0 is count
        data[i]['price'] = subData[subData.length-1]; //last is price
        data[i]['article'] = "";
        for(var j=1;j<subData.length-2;j++){ //in between is the name (minus the "at")
            data[i]['article'] += subData[j] + " ";
        }
    }

    return data //and done
}

jsFiddle:http://jsfiddle.net/3sNBJ/1/

...我打赌会有更好的解决方案,但我对正则表达式也不是很好......

[编辑] ...哦,导入也是一个需要的值......好吧,http://jsfiddle.net/3sNBJ/3/

[edit2] ...现在使用ui:http://jsfiddle.net/3sNBJ/5/