Java实现文本按照自然段落进行切分

package zg;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;


/**
 * 
 * <p>
 * ClassName GetParagraph
 * </p>
 * <p>
 * Description 使用Java完成对一篇文本的自然段落的切分,在此给出了五种文本格式作为示例,对任一种格式,该程序均可以正确切分。
 * </p>
 */
public class GetParagraph {
    public static void main(String[] args) throws IOException {
        ArrayList<String> res = new ArrayList<String>();// 段落切分结果
        StringBuilder sb = new StringBuilder();// 拼接读取的内容(while循环中不到断尾时,将字符一个个加入拼接)
        String temp = null;// 临时变量,存储sb去除空格的内容
        // BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\a.txt")));
        // BufferedReader reader= new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\b.txt")));
        // BufferedReader reader= new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\c.txt")));
        // BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\d.txt")));
        BufferedReader reader = new BufferedReader(new FileReader(new File("D:\\e.txt")));
        int ch = 0;
        while ((ch = reader.read()) != -1) {//注意文本最后一段末尾不是'\r'。所以ch=-1时,最后一段sb已经拼接的temp还没有存入res.
            temp = sb.toString().trim().replaceAll("\\s+", "");//去除前后空格,之后去除中间空格
            if ((char) ch == '\r') {
                // 判断是否是空行
                if (!"".equals(temp)) {
                    // 说明到了段落结尾,将其加入链表,并清空sb
                    res.add(temp);
                }
                sb.delete(0, sb.length());//清空sb
                temp=null;
            } else {
                // 说明没到段落结尾,将结果暂存
                sb.append((char) ch);
            }
        }
        if (reader.read() == -1) {//注意文本最后一段末尾没有'\r'。所以ch=-1时,最后一段temp还没有存入res.
            System.out.println("哈哈,你读到了末尾嘞!");
        }
        // 最后一段如果非空, 将最后一段加入,否则不处理
        if (!"".equals(temp)) {
            res.add(temp);
        }


        Iterator<String> iterator = res.iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println("段落开始:");
            System.out.println(next);
        }
        System.out.println("段落的个数是:" + res.size());
    }

}

文本:

显然,计算机是一种工具或媒介,而不是社交生活中的行动者。然而,“媒介等同”理论表明人与计算机、电视和新媒体的交互从根本上讲是社交化的和自然的,就像是真实生活中的互动[108]。因此这个理论表明技术应该被理解为社交参与者而不仅是工具或媒体。基于这种新的范式,越来越多的研究去关注技术中某些特定的社交属性是如何影响用户的感知和行为的。
当用户评价计算机和内容时,他们之间的相似性就非常重要[91,36]。例如,Nass和Moon[91]认为,表现出类人特性的计算机更具有说服力。在他们的研究中,比起一个被动从属的计算机,占主导地位的参与者更加容易被一个主动性更强的计算机吸引以及激发自己的智慧。与占主导地位的计算机相比,从属参与者对从属计算机和主导型计算机的反应也相似,即使它们本质上具有相同的内容。Nass、Isbister和Lee的研究[90]还揭示了人口统计学相似度的影响。他们的研究发现,当用户面对与自己相近的计算机智能体时,用户感知到这样的计算机智能体更具有吸引力、更值得信赖、更具说服力和更有智慧。
权威性表达在人与机器交互中被认定为是有影响力的因素。Nass和Moon[91]发现,与标记为普通级的电视机相比,被标记为专家级的电视被认为能够提供更好的内容。Fogg[36]也指出,承担权威角色的计算技术会更具有说服力。他认为展示所获奖项或第三方认可(如批准印章)的网站被视为具有更高的可信度。
许多研究[90,93]表明计算机智能体的人口统计学特征影响了用户的感知。Nass等[93]介绍,一些用户会对计算机带有性别或种族成见。研究还发现,人们认为配置男性声音的辅导计算机比设置女性声音的计算机更有能力,也更让人喜欢。他们发现,女声发音的计算机在指导爱和关系方面要比男声发音的计算机优秀,但是计算能力要比男声发音的计算机差。
此外,语言的使用,如奉承[38]、道歉[132]和礼貌[71]也会影响用户的感知和行为。此外,计算机智能体的外在吸引力也是重要的。Nass、Isbister和Lee[90]指出,用户更喜欢与更具吸引力的计算机智能体进行交流和互动。
最后,在人际交互环境中也验证了幽默特征。Morkes、Kernal和Nass[83]发现那些展示出幽默的计算机更惹人喜爱。然而,更多存在于人与人交互中的基于幽默的认同感与更深层次的交互,还没有复制到人机交互的情境中。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java和POI库修改Word文件段落内容的步骤如下: 1. 使用org.apache.poi.xwpf.usermodel.XWPFDocument类打开Word文档。 ``` java FileInputStream fis = new FileInputStream("文件路径"); XWPFDocument document = new XWPFDocument(fis); ``` 2. 获取需要修改的段落,可以通过XWPFDocument类的getParagraphs()方法获取所有段落,然后遍历每个段落,判断是否需要修改。 ``` java List<XWPFParagraph> paragraphs = document.getParagraphs(); for (XWPFParagraph paragraph : paragraphs) { String text = paragraph.getText(); if (text.contains("需要修改的文本")) { // 修改文本内容 paragraph.getRuns().get(0).setText("新的文本内容", 0); } } ``` 3. 修改完毕后,将Word文档保存到文件中。 ``` java FileOutputStream fos = new FileOutputStream("文件路径"); document.write(fos); fos.close(); ``` 完整的代码示例如下: ``` java import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.List; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; public class ModifyWordParagraph { public static void main(String[] args) throws Exception { FileInputStream fis = new FileInputStream("文件路径"); XWPFDocument document = new XWPFDocument(fis); List<XWPFParagraph> paragraphs = document.getParagraphs(); for (XWPFParagraph paragraph : paragraphs) { String text = paragraph.getText(); if (text.contains("需要修改的文本")) { // 修改文本内容 paragraph.getRuns().get(0).setText("新的文本内容", 0); } } FileOutputStream fos = new FileOutputStream("文件路径"); document.write(fos); fos.close(); document.close(); } } ``` 在代码中,需要修改的文本可以通过contains()方法来判断是否包含,如果需要修改的文本在多个段落中出现,需要在循环中修改每个段落文本内容。如果需要修改的文本包含特殊格式,比如加粗、斜体、下划线等,需要使用XWPFRun类的setFontXXX()方法设置格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值