如何读取每个字符串的最后一个字符?

时间:2019-07-25 14:00:02

标签: javascript

enter image description here

我的代码生成一个字符串,如图所示。在每一行的末尾显示了一个欧元数字,将其称为euros1和euros2。想法是图标的数量乘以每行显示的euros1和euros2。因此,在我的示例中:第一行的(10,45 + 5,50)x 2 = 31,90,第二行的(18,24 + 9,60)x 3 = 83,52。这些数字总共应该是115,42。

但是,我当前的代码总共产生218,95。因此,它将欧元1和欧元2的总和乘以✓图标的总数。

我如何计算每行1欧元+ 2欧元x数量✓图标的总和?

我认为for循环可以帮助我,但是我是Java语言的新手,我不确定该如何进行。

var temp = g_form.getValue('mwadm_onkosten_list_refList_changes');
var count = (temp.match(/✓/g) || []).length;

var lastChar = temp[temp.length -1];
if (count != temp);
{
    total = total * count;
}

3 个答案:

答案 0 :(得分:1)

我在想一个分开的解决方案,就像@dganenco提到的那样。我创建了一个TEMP变量来重现您的结果字符串。并在每个行上执行一个函数。

我故意保持它非常简单。希望这可以帮助。

var temp = ["✓|| €10,45 | €1,50 ", "✓|| €10,45 | €2,50 ", "✓|| €10,45 | €3,50 "];
var totalTimes = (String(temp).match(/✓/g) || []).length;

//perform function for each row
temp.forEach(CalculateRow);

//Splits the row, Gets euro1 as decimal, euro2 as decimal, calculates the amount a character is found, calculates total, prints it to console.
function CalculateRow(item, index) {
    var arr = item.split('|');
    var euro1 = GetValueFromArray(arr,1);
    var euro2 = GetValueFromArray(arr, 2);
    var times = (String(arr).match(/✓/g) || []).length;
    var _total = (euro1 + euro2) * times;
    console.log(_total);
}

//Takes the index value, and casts it to decimal value
function GetValueFromArray(arr, index){
    var getindex = arr.length -index;
    var result = arr[getindex];
    result = result.replace('€', '');
    return parseFloat(result, 10);
}

答案 1 :(得分:0)

如果有可能仅用|符号分割字符串,然后获取最后2个值并使用它们做所有需要的事情,我为您提供了一个解决方案。

const strArr = ['asd|addf|$56.60|$10.40', 'asd|addf|$5.60|$1.40'];
let sum = 0;
strArr.forEach(str => {
	const splitted = str.split('|');
	debugger;
	const x = getNumber(splitted[splitted.length - 2]);
	const y = getNumber(splitted[splitted.length - 1]);
	sum += (x+y)*2;
});

function getNumber(str){
	return +str.substring(1);
}

console.log(sum)

答案 2 :(得分:0)

假设temp是采用
形式的多行字符串 asd|√|√| €12.34 | €15.25 zxc|√|| €18.34 | €19.25
此代码应为您提供最后两个数字的总和乘以√

var temp = "asd|√|√| €12.34 | €15.25\nzxc|√|| €18.34 | €19.25"
let lines = temp.split('\n')
let linesSummaries = []
for(let line of lines){
	var count = line.match(/√/g).length
	var vars = line.split('|')
	var x = parseFloat(vars[vars.length-1].match(/\d+\.?\d*/))
	var y = parseFloat(vars[vars.length-2].match(/\d+\.?\d*/))
	var lineSum = (x + y ) * count 
	linesSummaries.push(lineSum)
}
console.log(linesSummaries)