gpt4 book ai didi

java - 使用 .split 时前导空格

转载 作者:行者123 更新时间:2023-12-01 05:05:38 24 4
gpt4 key购买 nike

我有一项作业要修改课本上的程序。该程序从用户处获取输入字符串,然后响应输入了多少个单词。我的任务是更改此设置以进行字符计数而不是字数计数。我的工作正常,但是当我使用 .split 来标记字符时,我在数组中得到了一个前导空格,有人可以解释为什么吗?

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

/**
*
* @author Frank
*/
public class LetterCounting
{
public static void main( String[] args )
{
// create HashMap to store String keys and Integer values
Map< String, Integer > myMap = new HashMap< String, Integer >();

createMap( myMap ); // create map based on user input
displayMap( myMap ); // display map content
} // end main

// create map from user input
private static void createMap( Map< String, Integer > map )
{
Scanner scanner = new Scanner( System.in ); // create scanner
System.out.println( "Enter a string:" ); // prompt for user input
String input = scanner.nextLine();

// tokenize the input
String letters = input.replaceAll("\\s", "");
String[] tokens = letters.split( "" );

// processing input text
for ( String token : tokens )
{
String word = token.toLowerCase(); // get lowercase word

// if the map contains the word
if ( map.containsKey( word ) ) // is word in map
{
int count = map.get( word ); // get current count
map.put( word, count + 1 ); // increment count
} // end if
else
map.put( word, 1 ); // add new word with a count of 1 to map
} // end for
} // end method createMap

// display map content
private static void displayMap( Map< String, Integer > map )
{
Set< String > keys = map.keySet(); // get keys

// sort keys
TreeSet< String > sortedKeys = new TreeSet< String >( keys );

System.out.println( "\nMap contains:\nKey\t\tValue" );

// generate output for each key in map
for ( String key : sortedKeys )
System.out.printf( "%-10s%10s\n", key, map.get( key ) );

System.out.printf(
"\nsize: %d\nisEmpty: %b\n", map.size(), map.isEmpty() );
} // end method displayMap
} // end class WordTypeCount

我有来自 netbeans 的 dubug 数据的屏幕截图,但我没有足够的声誉来发布它。如果有人想看它,请告诉我,我可以将其发送给您。

预先感谢您的投入。

弗兰克

最佳答案

为什么不尝试一下 replaceAll(regex, replacement) 方法并编写如下简单的代码?

    Scanner scanner = new Scanner( System.in ); // create scanner
System.out.println( "Enter a string:" ); // prompt for user input
String inputString = scanner.nextLine();
System.out.println(inputString);
System.out.println(inputString.length());
String truncatedString = inputString.replaceAll(" ", "");
System.out.println(truncatedString);
System.out.println(truncatedString.length());

关于java - 使用 .split 时前导空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12733033/

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