有沒有一種方法可以獲取由Method Scanner在Java中獲取的字符串中的令牌數?用java掃描器獲取字符串中的令牌數
我的意思是,我可以使用s = sc.nextLine()
作爲一個字符串獲得輸入行。但在這個字符串我不能使用lenght()
方法,因爲它給了我總字符數(我認爲)。
現有任何標準方法來獲取令牌的數量嗎? 在此先感謝
有沒有一種方法可以獲取由Method Scanner在Java中獲取的字符串中的令牌數?用java掃描器獲取字符串中的令牌數
我的意思是,我可以使用s = sc.nextLine()
作爲一個字符串獲得輸入行。但在這個字符串我不能使用lenght()
方法,因爲它給了我總字符數(我認爲)。
現有任何標準方法來獲取令牌的數量嗎? 在此先感謝
謝謝@Achintya Jha – alessandrob
@Markviduka歡迎您:) –
您可以使用Matcher:
Pattern pattern = Pattern.compile(token);
Matcher matcher = pattern.matcher(s);
int count = 0;
// Check all occurrences
while (matcher.find()) {
++count;
}
不幸的是,Scanner
無法從輸入中消耗這些令牌來進行令牌計數。因此,爲了訪問這些令牌,你必須將它們保存在一個列表:
List<String> tokens = new LinkedList<String>();
Scanner sc = new Scanner(System.in);
int count = 0;
while(sc.hasNext()) {
tokens.add(sc.next());
count++;
}
System.out.println("Number of tokens: "+count);
你可以使用split
方法進行管理:
public static int getTokenCount(String input) {
if (input == null) {
return 0;
}
input = input.trim();
if (input.isEmpty()) {
return 0;
}
return input.split("\\s+").length;
}
使用split()
,它支持正則表達式,不像StringTokenizer
。
int nbOfTokens = sc.nextLine().split(sc.delimiter().pattern()).length;
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
String delims= "[ .,'[email protected]]+";
int length1=s.split(delims).length;
System.out.println(length1);
String[] tokens=s.split(delims);
for(String token : tokens){
System.out.println(token);
}
scan.close();
}
}
您能否也請解釋代碼?由於代碼只有答案,可能會解決問題,但不幫助別人理解。 –
我覺得不存在這樣的方式。掃描儀在您輸入密碼時爲您提供下一個標記。這意味着,它不知道它有多少令牌。 – Eugene