当前位置: 首页 > 知识库问答 >
问题:

将一串多个句子拆分为单个句子,并用html标签包围它们

归俊杰
2023-03-14

我是Java初学者,目前正在寻找一种基于分隔符(.)将String消息拆分为子字符串的方法。理想情况下,我有一个句子,然后我想用HTML标记包装每个句子,即<code>

我使用BreakIterator类尝试了以下操作:

    BreakIterator iterator = BreakIterator.getSentenceInstance(Locale.ENGLISH);
    List<String> sentences = new ArrayList<String>();
    iterator.setText(message);
    int start = iterator.first();
    String newMessage= "";
    for (int end = iterator.next();
         end != BreakIterator.DONE;
         start = end, end = iterator.next()) {
         newMessage= "<p>"+ message.substring(start,end) + "</p>";
         sentences.add(newMessage);
    }

这给了一句话。我被困在这里,我也想把每个数字包装成一个句子。

我的字符串包含类似于:

    String message = "Hello, John. My phone number is: 02365897458. 
                      Please call me tomorrow morning, at 8 am."

输出应该是:

String newMessage = "<p>Hello, John.</p><p>My phone number is: 
                     <number>02365897458</number>.
                    </p><p>Please call me tomorrow morning, at 8 am.</p>"

有可能实现这一点吗?

共有3个答案

舒阳州
2023-03-14

可以通过添加来存档周围的句子

要添加数字标记,可以使用正则表达式替换。replaceAll方法和类似于[0-9]的正则表达式(取决于数字的外观)可以做到这一点。

与此类似的东西应该有效(未经测试):

newMessage = "<p>" + message.replace(".", ".</p><p>")
                            .replaceAll("([0-9]+)", "<number>$1</number>") + 
             "</p>"

蒋典
2023-03-14

这可以通过使用< code>StringTokenizer类和< code>StringBuilder类轻松完成:

String message = SOME_STRING;
StringBuilder builder = new StringBuilder();
StringTokenizer tokenizer = new StringTokenizer(message, ".");
while(tokenizer.hasMoreTokens()) {
    builder.append("<p>");
    builder.append(tokenizer.nextToken());
    builder.append("</p>");
}
return builder.toString();

您可以根据需要为各种标签添加更多分隔符。

尹光辉
2023-03-14

在 Java String 上尝试拆分方法。您可以在 上拆分 . 它将返回一个字符串数组。

https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-

 类似资料:
  • 我有一个包含1000个句子的文本文件。我从“.”中拆分了句子,但这些句子中也有“?”和“!”。我也需要拆分它们,并在这些句子的末尾加入这些字符。例如:text=“我有一个朋友。我有很多朋友!我今天很开心。你开心吗?我希望你是。”输出: 我尝试过的代码是 它仅适用于一个字符。

  • 问题内容: 我已经编写了这段代码,用于拆分字符串并将其存储在字符串数组中:- 但是,我添加了[az],因为我想处理一些缩写问题。但是随后我的结果显示为: 此外,当埃弗里特(Everett)试图指导他们进行基础数学训练时,他们被证明是毫无反应的 我看到丢失了split函数中指定的模式。对我来说,可以省略句号,但是丢失单词的最后一个字母会打乱其含义。 有人可以帮助我吗?此外,有人可以帮助我解决缩写吗?

  • 问题内容: 我想从字符串中列出句子列表,然后将其打印出来。我不想使用NLTK来做到这一点。因此,它需要在句子末尾的句点上进行分隔,而不是小数点,缩写或名称的标题,或者句子中包含.com。这是对正则表达式的尝试,不起作用。 示例输出应如下所示 问题答案: (?<!\w.\w.)(?<![A-Z][a-z].)(?<=.|\?)\s 尝试这个。分割您的字符串。您还可以查看演示。 http://rege

  • 问题内容: 例如: 字符串s =“ this是a.line是.over” 应该出来 “这是行结束。” 我想到两次使用字符串标记器 现在我不确定如何使用字符串标记器的输出作为另一个的输入? 我也可以使用split方法生成数组我尝试过的东西 问题答案: 使用StringBuilder,无需拆分和创建其他字符串,依此类推,请参见代码

  • 我的CS课程有一个非常具体的问题。我有一个字符串中的句子,我需要在ArrayList中将其分隔成单个单词,并且不能使用split方法。 我的问题是,我没有对数组进行过任何教学,只有对循环和字符串语句的最起码的教学。我做了大量的研究,找到了进行循环并将单词发送到ArrayList的最佳方法,但是我仍然找不到一个好的方法来使它在句子中循环并将每个单词分开。我明白了把第一个单词分开是多么容易,然而在那之