Mirth字符串处理

问题描述 投票:0回答:1

我正在使用下面的代码来尝试从输入文件中删除文件扩展名,并将其替换为“ 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')有关字符集?

mirth
1个回答
1
投票

首先,您要混合使用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)
© www.soinside.com 2019 - 2024. All rights reserved.