解决:IDE编译报错:Dangling metacharacter

强颜欢笑 提交于 2020-04-28 08:09:52

<div id="content_views" class="markdown_views prism-tomorrow-night"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <h2><a name="t0"></a><a id="Dangling_metacharacter_2"></a><wdautohl-customtag style="font-weight:bold;color:red;font-size:inherit;display:inline;" id="wdautohl_id_2" class="wdautohl_ZGFuZ2xpbmc_">Dangling</wdautohl-customtag> metacharacter的意思是说:摇摆不定的元字符。</h2> <blockquote> <p>翻译成编程意思就是:当前字符计算有其它意思,并不能确定你到底用于什么意思。类似于中文的多义词。</p> </blockquote> <p>如下图所示,当我们要分割字符串中“+”的时候,编译不通过。<br> <img src="https://img-blog.csdnimg.cn/201908221106251.png" alt="在这里插入图片描述"></p> <h2><a name="t1"></a><a id="_9"></a>解决办法:</h2> <h2><a name="t2"></a><a id="_11"></a>第一种:将“+”写成“\\+”</h2> <pre class="prettyprint"><code class="has-numbering hljs vbscript" onclick="mdcp.signin(event)" style="position: unset;"> <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> Test { <span class="hljs-keyword">public</span> static void main(<span class="hljs-built_in">String</span>[] args) {

    <span class="hljs-built_in">String</span> str=<span class="hljs-string">"aaa+bbb+ccc+ddd"</span>;
    <span class="hljs-built_in">String</span>[] <span class="hljs-built_in">split</span>=str.<span class="hljs-built_in">split</span>(<span class="hljs-string">"\\+"</span>);
    <span class="hljs-keyword">for</span>(<span class="hljs-built_in">String</span> sp:<span class="hljs-built_in">split</span>){
        System.out.println(sp);
    }

}

}

<div class="hljs-button signin" data-title="登录后复制"></div></code></pre> <p><img src="https://img-blog.csdnimg.cn/20190822111252361.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk1NzE0Mw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br> 启动main方法:<br> 控制台输出:<br> <img src="https://img-blog.csdnimg.cn/20190822111322951.png" alt="在这里插入图片描述"><br> 说明分割成功了。</p> <h2><a name="t3"></a><a id="_36"></a>第二种.将“+”转成成“[+]”;</h2> <p><img src="https://img-blog.csdnimg.cn/20190822111605594.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk1NzE0Mw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br> 启动main方法,控制台输出:<br> <img src="https://img-blog.csdnimg.cn/20190822111625966.png" alt="在这里插入图片描述"><br> 说明分割成功了。<br> 一般元字符还包括:“*”等。</p> <h2><a name="t4"></a><a id="_43"></a>当然,像"\";"|"在正则表达式有特殊意义,我们建议用第二种办法啊,否则可能出现另外一种意思。</h2> <p>比如:</p> <pre class="prettyprint"><code class="has-numbering hljs vbscript" onclick="mdcp.signin(event)" style="position: unset;"><span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> Test { <span class="hljs-keyword">public</span> static void main(<span class="hljs-built_in">String</span>[] args) {

    <span class="hljs-built_in">String</span> str = <span class="hljs-string">"aaa|bbb|ccc|ddd"</span>;
    <span class="hljs-built_in">String</span>[] <span class="hljs-built_in">split</span> = str.<span class="hljs-built_in">split</span>(<span class="hljs-string">"|"</span>);
    <span class="hljs-keyword">for</span>(<span class="hljs-built_in">String</span> sp: <span class="hljs-built_in">split</span>) {
        System.out.println(sp);
    }
}

}

<div class="hljs-button signin" data-title="登录后复制"></div></code></pre> <p><img src="https://img-blog.csdnimg.cn/20190822112221760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk1NzE0Mw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br> 发现我们编译通过,但是当我启动main方法后,控制台输出:<br> <img src="https://img-blog.csdnimg.cn/20190822112313255.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk1NzE0Mw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br> 说明当空字符串来分割了。<br> 我们换一种方式:<br> <img src="https://img-blog.csdnimg.cn/2019082211255623.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk1NzE0Mw==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><br> 启动main方法,控制台输出:<br> <img src="https://img-blog.csdnimg.cn/20190822112732688.png" alt="在这里插入图片描述"><br> 祝贺我们分割成功了。</p>

                                </div>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!