如何在JavaScript中的字符串的每个新行中添加“>”?

时间:2019-03-06 11:55:09

标签: javascript string

我在UI上有一个文本区域,我需要用户输入Markdown。我需要确保他们键入的每一行都以>开头,因为我想在预览时查看键入为blockquote的所有内容。

例如,如果他们输入:

> some text user <b>typed</b>

another line

渲染降价时,只有第一行是大括号。其余的是块引用外的纯文本。

有没有一种方法可以检查每行并添加>(如果缺少)。

我尝试过的事情:

  1. 我尝试删除所有>字符并将每个\n替换为\n>。但是,这也弄乱了Markdown,因为用户也可以输入<b>bold text</b>

  2. 我有一个循环,该循环在每个新行之后检查>字符。我只是不知道如何将>插入而丢失。

循环代码:

 var match = /\r|\n/.exec(theString);
 if (match) {
     if (theString.charAt(match.index)!='>'){
         // don't know how to ad the character
     }
 }
  1. 尽管我也可以在文本区域中强制执行>,但这项研究无济于事。在这种情况下,我认为这是不可能的。

  2. 我还认为,如果用户键入多个>>>>,该怎么办。在那个阶段,我考虑得太多了,并说我会省去诸如此类的情况,因为那可能是用户的意图。

如果任何人有任何建议和/或替代解决方案,将不胜感激。谢谢:)

2 个答案:

答案 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&gt;就可以了。