Java代码从文件检查中读取带有大括号的单词,然后写入没有大括号的单词
代码可以正常工作,因为它读取文件并显示不带括号的单词,但它的文件很大,有四百行,但结果仅显示几行,这意味着代码可以读取文件并写入不带花括号的单词,但不会遍历整个文件
更改了常规的表示形式,但这很好,因为它可以读取任何带有大括号的单词,并写入不带有大括号的单词
需要验证的代码
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class StringUtilitiesFromFile {
public static void main(String[] args) throws IOException
{
String Android = "Android is CS and (OS)";
String OS = Android.replaceAll("\\(.*\\)", "");
System.out.println("Android " + OS);
}
}
结果是Android Android是CS,并且没有带有括号的打印(OS)
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class StringUtilitiesFromFile {
public static void main(String[] args) throws IOException
{
File file = new File("Auth.html");
String string = FileUtils.readFileToString(file);
String And = string.replaceAll("\\(.*\\)", "");
System.out.println(And);
System.out.println("");
}
}
结果是: 大街 胡子 下面 船 界 明亮的预算生成器隔板商人商人女商人屠夫 笼碳 致癌卡慎用 洞穴 特性 首席 首席黏土 清洁教练 煤 自在 消费品 联系 勇气 勇气,胆识,法庭堂兄,掩饰残酷 辩论被告辩护辩护赤字 定义
大约二十四行,但实际文件包含大约四百行
文件中包含文字 能力(名词)能(形容词)关于(介词)关于(副词)以上(副词)以上(介词)国外(副词)缺席(名词)缺席(形容词)绝对(形容词)抽象(形容词)滥用(动词)滥用(名词)滥用学术(形容词)接受(动词)可接受(形容词)接受访问(动词)访问(名词)伴随(动词)符合(到)介词(动词)账户(名词)会计准确(形容词)a(不定冠词)放弃(动词)能力(名词)能(形容词)关于(介词)关于(副词)以上(副词)以上(介词)国外(副词)缺席(名词)缺席(形容词)绝对(形容词)抽象摘要(形容词)滥用(动词)滥用(名词)辱骂学术(形容词)接受(动词)可接受(形容词)接受访问(动词)访问(名词)伴随(动词)依(到)介词(动词)账户(名词)会计准确(形容词)指责疼痛(名词)疼痛达到(动词)获得(动词)横跨(副词)横跨(介词)动作(动词)动作(名词)动作(名词)活动活动(名词)演员女星实际(形容词)实际(副词)适应(动词)加(动词)加法(名词)附加(形容词)地址(名词)地址(动词)适当的(形容词)休会调整(动词)管理(名词)钦佩(动词)接纳(名词)承认(动词)领养(动词)领养成人(名词)成人(形容词)推进(名词)推进(动词)优势(名词)冒险(名词)冒险广告(动词)广告(名词)忠告(动词)外遇(名词)影响(动词)感情深情地承受(动词)害怕(形容词)后(副词)后(连词)后(介词(再次)下午(副词)反对(介词)年龄(名词)年龄(动词)中介(名词)中介(名词)激进的前同意(动词)同意(名词)前面的农业(副词)援助(动词)援助(名词) )目标(名词)目标(动词)空中交通管制员飞机(名词)机场(名词)过道警报(动词)警报(名词)警报(名词)警报(adjec tive)警报(动词)alibi lim养费活着(形容词)all(副词)all(代词)all(形容词)all right(副词)all right(形容词)
行数更多;代码应仅读取不带大括号的单词并编写
答案 0 :(得分:1)
我认为您的正则表达式可能会遇到麻烦。
您正在尝试剔除与此匹配的所有字符:\(.*\)
。问题在于字符“(”和“)”也匹配.*
,因此您的表达式匹配(
+ 任何内容,包括括号 + )
,并且这很可能会消除您不愿删除的所有单词。
一种解决方案是使用勉强的量词而不是贪婪的量词。
使用*?
代替*
来实现此目的。它将匹配满足您的正则表达式的最小字符数。
另一种选择是像在\([^()]*\)
中一样,在正则表达式中明确排除括号。
尝试一下:
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class StringUtilitiesFromFile {
public static void main(String[] args) throws IOException
{
File file = new File("Auth.html");
String string = FileUtils.readFileToString(file);
String And = string.replaceAll("\\(.*?\\)", "");
System.out.println(And);
System.out.println("");
}
}
转到RegexPlanet之类的正则表达式测试器来解决问题。