gpt4 book ai didi

java - 如何正确输入带撇号的单词?像 "wouldn' t"和 "couldn' t"这样的词被放入 ArrayList 中作为 "wouldn"和 "couldn"

转载 作者:行者123 更新时间:2023-12-02 01:34:23 30 4
gpt4 key购买 nike

这里的 IT 网络/编程学生试图完成一项作业,但我遇到了障碍。我们的任务是读取文本文件,将单词放入 ArrayList 中,并对内容执行字符串操作。我能够将单词拉入 ArrayList、按升序对内容进行排序、删除任何少于四个字符的单词、删除重复条目以及删除数字。但我发现带有撇号的单词被“切断”。像“wouldn't”和“couldn't”这样的词被作为“wouldn”和“couldn”放入我的ArrayList中。

我已经为我的扫描仪对象尝试了不同的分隔符,但我似乎无法找到将撇号保留在单词中并且不会在撇号之后切断单词的分隔符。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Scanner;

public class textFile {

public static void main(String[] args) throws FileNotFoundException {

// Scanner object reads in the required text file to the "words" ArrayList.
Scanner sc = new Scanner(new File("textfile.txt"), "UTF-8");
ArrayList<String> words = new ArrayList<String>();
while (sc.hasNext()) {
sc.useDelimiter("[^A-Za-z]");
words.add(sc.next().toLowerCase());

}
// Closes the Scanner object used just above.
sc.close();

// Sorts the "words" ArrayList in ascending order.
Collections.sort(words);

// Creates the "wordsNoDuplicates" ArrayList. Removes duplicate strings.
LinkedHashSet<String> wordsNoDup = new LinkedHashSet<String>(words);

// Removes all words containing less than four characters.
wordsNoDup.removeIf(u -> u.length() < 4);

// Prints the total number of words in the "wordsNoDup" ArrayList
System.out.println("Total Number of Words: " + wordsNoDup.size() + "\n");

// Calculate and print the average word length.
// double avgWordLength = 21186 / wordsNoDup.size();

System.out.println("Average Word Length: " + 7.0 + "\n");

// Print out the "words" ArrayList. Intended for debugging.
System.out.print(wordsNoDup);

System.out.println();

}
}

同样,诸如“couldn't”、“shouldn't”和“wouldn't”之类的词被拉入“couldn”、“shouldn”和“wouldn”。似乎撇号及其后面的任何内容都被删除了。我公开承认我对 Java 或编程没有广泛的了解,但我们将不胜感激任何帮助!

最佳答案

在代码中使用它,

sc.useDelimiter("[^A-Za-z]");

除字母之外的任何字符都将充当分隔符,因此 ' 也将充当分隔符,因此我建议将上面的代码行更改为此,

sc.useDelimiter("[^A-Za-z']");

因此 ' 将不再被视为分隔符,并且应在单词中保留 '

但我认为最好阅读您的文本并使用适当的正则表达式来匹配和过滤您的单词,因此,只有当 ' 出现在单词中而不是出现时,您才异常(exception)地允许它可能在单词之外。

关于java - 如何正确输入带撇号的单词?像 "wouldn' t"和 "couldn' t"这样的词被放入 ArrayList 中作为 "wouldn"和 "couldn",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55444919/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com