我正在使用下面的代码来尝试从输入文件中删除文件扩展名,并将其替换为“ ACK”;
不能使用.lastIndexOf,因为它在Rhino中不可用。
var _filename = String(sourceMap.get('originalFilename'));
pos = -1;
var search = ".";
for(var i = 0; i < _filename.length - search.length; i++) {
if (_filename.substr(i, search.length) == search) {
pos = i;
}
}
logger.info('_pos:' + _pos);
每次我得到pos值为-1即找不到上一个止损位置。
但是如果我将文件名硬编码为“ 2020049.259317052.HC.P.F3M147-G”,它将很好地工作。
是否与提供非字符串或其他形式的sourceMap.get('originalFilename')有关字符集?
首先,您要混合使用JavaScript类型和Java类型。
var _filename = String(sourceMap.get('originalFilename'));
代替,做
var _filename = '' + sourceMap.get('originalFilename');
这将导致从Java字符串到JS字符串的类型转换。
第二,有一种更简单的方法可以完成您想做的事情。
var _filenameArr = ('' + sourceMap.get('originalFilename')).split('.');
_filenameArr.pop() // throw away last item
var _filename = _filenameArr.join('.') // rejoin the array with out the last item
logger.info('_filename:' + _filename)