在原始降价中查找HTML中的文本

时间:2015-08-12 07:54:50

标签: javascript html markdown text-processing

我正在尝试根据所选文字为一段降价添加内容。问题是所选文本已转换为HTML,因此我不确定如何在原始markdown中找到所选文本的位置。有没有我可以用来做这个的算法?

示例(使用|作为选择插入符号):

原始降价:

MCOIMAPSession *session = [[MCOIMAPSession alloc] init];
[session setHostname:@"imap.gmail.com"];
[session setPort:993];
[session setUsername:@"..."];
[session setPassword:@"..."];
[session setConnectionType:MCOConnectionTypeTLS];

MCOIMAPMessagesRequestKind requestKind = MCOIMAPMessagesRequestKindHeaders;
NSString *folder = @"INBOX";
MCOIndexSet *uids = [MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)];

MCOIMAPFetchMessagesOperation *fetchOperation = [session fetchMessagesOperationWithFolder:folder requestKind:requestKind uids:uids];

[fetchOperation start:^(NSError * error, NSArray * fetchedMessages, MCOIndexSet * vanishedMessages) {
    //We've finished downloading the messages!

    //Let's check if there was an error:
    if(error) {
        NSLog(@"Error downloading message headers:%@", error);
    }

    //And, let's print out the messages...
    NSLog(@"The post man delivereth:%@", fetchedMessages);
}];

已处理的HTML:

Heading
=======

##Heading 2
####Heading 4

期望的结果:

<h1>Heading</h1>
<h2>H|eading 2|</h2>
<h4>Heading 4</h4>

是否有一种算法可以将处理过的HTML中的任意选择(例如| Head | ing或H | ead | 4)转换为原始markdown中的位置?

1 个答案:

答案 0 :(得分:0)

[^#{2}H{1}]*[2]$将与您示例中的eading 2匹配。这只是一个快速而又脏的正则表达式,只是为了匹配你的样本字符串。

以下是您在示例HTML中匹配eading 2的方式:

var text = '';
var re = /[H{1}]*[2]$/;
var myRe = /[^H{1}]*[2]$/;

var elements = document.getElementByTagName('h2');

for(var elm in elements) {
   // no match to 'Heading 2', keep searching
   if(re.match(elements[h2].innerHTML) == null) {
     continue;
   } else {
     // when found, match only 'eading 2'
     text = myRe.match(elements[h2].innerHTML);
   }
}

匹配Markdown中的字符串

var re = /[^#{2}H{1}]*[2]$/;

希望它有所帮助。