我正在尝试根据所选文字为一段降价添加内容。问题是所选文本已转换为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中的位置?
答案 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]$/;
希望它有所帮助。