首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在用于Adobe Indesign的extendscript中定义换行符

如何在用于Adobe Indesign的extendscript中定义换行符
EN

Stack Overflow用户
提问于 2019-05-14 22:19:11
回答 3查看 1.4K关注 0票数 0

我正在使用扩展脚本从下载的明文电子邮件(.txt)中构建一些发票

在文件中的某些地方,有几行文本看起来像“订单号: 123456”,然后该行结束。我有一个由我在这个网站上找到的部分组成的脚本,它找到了"Order Number:“的结尾,以便获得一个子字符串的起始位置。我想使用按回车键的地方转到下一行作为第二个索引号来完成子字符串。为了做到这一点,我有另一段脚本,来自这个站点的乐于助人的人,它用一个字符的每个实例的索引组成一个数组。然后,我将使用比子字符串的第一个数字大的任何数组对象。

这有点令人费解,但我对Javascript还不太了解,如果有更简单的方法,我也不知道。

在javascript for extendscript for indesign中,我需要使用什么字符来模拟txt文件中的return键?

谢谢。

我尝试了像\n和\r\n和^p这样的东西,它们都有引号和没有引号,但当我尝试它们时,它们似乎都没有出现在数组中。

代码语言:javascript
复制
//Load Email as String

var b = new File("~/Desktop/Test/email.txt");

b.open('r');

var str = "";

while (!b.eof)

    str += b.readln();

b.close();

var orderNumberLocation = str.search("Order Number: ") + 14;


var orderNumber = str.substring(orderNumberLocation, ARRAY NUMBER GOES HERE)

var loc = orderNumberLocation.lineNumber


function indexes(source, find) {
    var result = [];
    for (i = 0; i < source.length; ++i) {
        // If you want to search case insensitive use 
        // if (source.substring(i, i + find.length).toLowerCase() == find) {
        if (source.substring(i, i + find.length) == find) {
            result.push(i);
        }
    }
    alert(result)
}

indexes(str, NEW PARAGRAPH CHARACTER GOES HERE)

我希望我的所有换行符都显示为变量"result“中的索引数组。

编辑:从文档中导入已剥离的所有换行符的方法。使用下面的代码效果更好。现在可以工作了。

代码语言:javascript
复制
var file = File("~/Desktop/Test/email.txt",  "utf-8");  
file.open("r");  

var str = file.read();  

file.close();  
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-17 04:25:47

您需要使用正则表达式。根据你需要搜索的字段,你需要调整正则表达式,但我可以给你一点。如果电子邮件中的字段由新行分隔,则可以使用下面的代码:

代码语言:javascript
复制
var str; //your string
var fields = {}
var lookFor = /(Order Number:|Adress:).*?\n/g;

str.replace(lookFor, function(match){
    var order = match.split(':'); 
    var field = order[0].replace(/\s/g, '');//remove all spaces
    var value = order[1];
    fields[field]= value;
})

使用(Order Number:|Adress:),您可以查找字段,您可以在括号内添加由或字符|分隔的更多字段。.*?\n运算符匹配任何字符,直到出现第一个换行符。g标志指示您要查找所有匹配项。然后调用str.replace,因为它允许您在每次匹配时执行单个任务。因此,如果字段和值的分隔符是冒号':',则将匹配项拆分为两个值组成的数组:['Order number', 12345],然后将匹配项存储到一个对象中。该代码将产生:

代码语言:javascript
复制
fields = {
    OrderNumber: 12345,
    Adresss: "my fake adress 000"
}
票数 0
EN

Stack Overflow用户

发布于 2019-05-15 22:43:46

请尝试\n并\r

示例: indexes(str,"\r");

票数 0
EN

Stack Overflow用户

发布于 2019-05-16 06:19:33

如果我理解得很好,你需要做的就是str.split()

代码语言:javascript
复制
function indexes(source, find) {
    var order;
    var result = [];
    var orders = source.split('\n'); //returns an array of strings: ["order: 12345", "order:54321", ...]
    for (var i = 0, l = orders.length; i < l; i++)
    {
        order = orders[i];
        if (order.match(/find/) != null){
            result.push(i)
        }
    }
    return result;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56132608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档