我在UI上有一个文本区域,我需要用户输入Markdown。我需要确保他们键入的每一行都以>
开头,因为我想在预览时查看键入为blockquote的所有内容。
例如,如果他们输入:
> some text user <b>typed</b>
another line
渲染降价时,只有第一行是大括号。其余的是块引用外的纯文本。
有没有一种方法可以检查每行并添加>(如果缺少)。
我尝试过的事情:
我尝试删除所有>
字符并将每个\n
替换为\n>
。但是,这也弄乱了Markdown,因为用户也可以输入<b>bold text</b>
。
我有一个循环,该循环在每个新行之后检查>
字符。我只是不知道如何将>
插入而丢失。
循环代码:
var match = /\r|\n/.exec(theString);
if (match) {
if (theString.charAt(match.index)!='>'){
// don't know how to ad the character
}
}
尽管我也可以在文本区域中强制执行>
,但这项研究无济于事。在这种情况下,我认为这是不可能的。
我还认为,如果用户键入多个>>>>
,该怎么办。在那个阶段,我考虑得太多了,并说我会省去诸如此类的情况,因为那可能是用户的意图。
如果任何人有任何建议和/或替代解决方案,将不胜感激。谢谢:)
答案 0 :(得分:1)
您可以使用正则表达式将url_two
插入每行的开头(如果该行不存在):
public void showWebView(String url){
webView.loadUrl(url);
recyclerView.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
}
public void onListItemClick(String url){
showWebView(url);
}
public void hideWebView(){
// loading blank url so it overrides last open url
webView.loadUrl("");
webView.setVisibility(View.GONE);
recyclerView.setVisibility(View.GONE);
}
@Override
public void onBackPressed() {
if(webView.getVisibility() == View.VISIBLE){
hideWebView();
}else{
super.onBackPressed();
}
}
模式>
的意思是:匹配行的开头,后跟const input = `> some text user <b>typed</b>
another line
another line 2
> another line 3`;
const output = input.replace(/^(?!>)/gm, '> ');
console.log(output);
。
如果您只想在行中已经有文本的地方插入^(?!>)
,则还要在行中提前查找非空格:
>
答案 1 :(得分:0)
我会选择replace(您尝试过的第一件事)。为了在HTML中插入文字>
,您必须escape。
只需将\n
替换为\n>
就可以了。