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

如何根据特殊字符将句子拆分成单词

翟聪
2023-03-14

我想根据特殊字符(如“=”)将一个句子拆分为单词。我尝试了以下代码,但无法得到确切答案,请参阅我的代码:

import java.io.*;
import java.util.*;
public class RunExe {


    public static void main(String[] args) {
        try
        {
            Process pr=Runtime.getRuntime().exec("VmgDiskActivityTest.exe");
            BufferedReader rd=new BufferedReader(new InputStreamReader(pr.getInputStream()));
            String lines=rd.readLine();
            String[] words=null;
            while(lines!=null)
            {
                System.out.println(lines);
                //System.out.println("*******************");
                words=lines.split("=");
                lines=rd.readLine();
            }
            System.out.println("After Spliting");
            //System.out.println("***************************");
            for(String word:words)
            {
                System.out.println(word);
            }
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }

    }

}

代码的输出是:

0 C: D: E:=99.993340#0.000000#0.035810#0.000000#0.000179#0.000358#0.000000#0.000000#1.999614#3071.407671_Total=99.993340#0.000000#0.035810#0.000000#0.000179#0.000358#0.000000#0.000000#1.999614#3071.407671

拆分后(总计99.993340#0.000000#0.035810#0.000000#0.000179#0.000358#0.000000#0.000000#1.999614 351.407671#

上面的代码分割正确,但我无法得到确切的结果。它只显示字符串的最后两部分,我需要显示所有四部分。

请分享你的想法或解决方案。。。

共有3个答案

吴和硕
2023-03-14

每次进入循环时,都会覆盖数组单词的内容。因此,只有最后一条分割线将代表其内容。

您可以为每一行添加一个Map数组,并将结果存储在其中。

String lines=rd.readLine();
String[] words=null;
Map<Integer,String[]> map=new HashMap<Integer,String[]>();
Integer index=0;

while(lines!=null)
{
  System.out.println(lines);
  //System.out.println("*******************");
  words=lines.split("=");
  map.put(index,words);
  index++;
  lines=rd.readLine();
}

然后简单地遍历列表,得到每行的拆分数组(索引表示从0开始的行号)

for (Map.Entry<Integer, String[]> entry : map.entrySet()) {
    System.out.println("Line " + entry.getKey());
    for(final String content: entry.getValue()){
        System.out.println(content);
    }
}

翟缪文
2023-03-14

在这行words=行中。拆分(“=”)基本上覆盖了单词数组,因此总是只能从最后的字符串中获得结果
为了实现你想要的,你应该使用ArrayList

姜玉泽
2023-03-14

读取循环中的行,将其拆分,然后分配给外部定义的wordsarray。在下一次迭代中,获得下一行,将其拆分,然后(重新)分配相同的数组。在最后一次迭代之后,单词数组因此包含拆分最后一行的结果,这就是您最后打印出来的结果。

 类似资料:
  • 我想把一个有空格或任何特殊字符的句子分成一个单词数组,空格或特殊字符也是数组的一个元素。 句子像: 应拆分为字符串数组: 请建议使用任何正则表达式或逻辑来使用java进行拆分。 我的问题漏了一件事。我还需要拆分数字字符。。但是使用split(“\b”)并不能拆分具有以下内容的字符串: abc12def 成

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

  • 我正在使用指南https://www.baeldung.com/rest-api-search-language-rsql-fiql构建基于RSQL的JPA规范。 like子句如下所示: 我的问题是,处理用户输入中转义特殊字符的最佳方法是什么? 例如,如果用户提供了字符串: 上面的代码将翻译为: 我想对字符串中的进行转义,这样它就不会在LIKE子句中被计算为通配符。 以下帖子为每个数据库声明了类似

  • 我希望能够根据子字符串分隔符拆分字符串,在分隔符子字符串的第一个字符之前开始拆分。现在: 将给我,但我希望得到

  • 我想用空格和特殊字符(如果有的话)来分割字符串。例如:用于表示移动交换中心(信号强度)。 目前我正在使用正则表达式来拆分字符串,但我无法同时实现空格和特殊字符的拆分。 更新代码:

  • 问题内容: 给定一个相对简单的CSS: 怎样让这个字符串停留约束到 的 150 ,和包装上的一个新的线 连字符 ? 问题答案: 用以下命令替换连字符: 它称为“软”连字符。