![](/img/trans.png)
[英]Compare strings by comparing words checking only the same number of letters in the word
[英]How to find words(strings) with only Uppercase letters?
我想知道,有什么功能或方法,如何從隨機文本中選擇僅包含大寫字母的所有單詞(字符串)? 更具體地說,我想從文本中提取所有大寫單詞並將它們放入字符串數組,因為這些大寫單詞對我很重要。
例如,來自文本: "This text was just made RANDOMLY to show what I MEANT."
在字符串數組中,我將有單詞RANDOMLY
和MEANT
。
並且數組應該看起來像這樣String[] myArray = {"RANDOMLY", "MEANT"};
我唯一想到的是,我已經遍歷每一個字母並檢查它的大寫字母,
如是
int count
)的值增加一 我認為我的抽提不是很有效,所以可以告訴我您對此的看法嗎? 還是可能如何使其更有效?
PS:有int count
可以排除3個字母以下的短單詞。
可能最簡單的方法是使用\\b[AZ]{4,}\\b
這樣的正則表達式來表示
\\b
單詞邊界 -字母數字字符和非字母數字字符之間的位置 [AZ]
字在范圍 AZ
{4,}
至少出現4次(如果我們不希望像I
這樣的單個字母單詞被計算在內)(更多信息,請訪問: http : //www.regular-expressions.info/repeat.html ) \\b
另一個單詞邊界以確保我們正在閱讀整個單詞 因此您的代碼可能如下所示:
String s = "This text was just made RANDOMLY to show what I MEANT.";
Pattern p = Pattern.compile("\\b[A-Z]{4,}\\b");
Matcher m = p.matcher(s);
while (m.find()) {
String word = m.group();
System.out.println(word);
}
除了打印單詞以進行控制台之外,您還可以將其存儲在List<String>
。
用空格分隔句子。 然后,您可以使用StringUtils.isAllUpperCase(CharSequence cs)
例如檢查每個字符串。
使用正則表達式提取它們。 喜歡
public static void main(String[] args) {
List<String> words = new ArrayList<>();
String dataStr = "This text was just made RANDOMLY to show what I MEANT.";
Pattern pattern = Pattern.compile("[A-Z][A-Z]+");
Matcher matcher = pattern.matcher(dataStr);
while (matcher.find()) {
words.add(matcher.group());
}
System.out.println(words);
}
輸出:
[RANDOMLY, MEANT]
將來,您可以調整搜索模式以提取所需的內容。
這是一個最少使用正則表達式的解決方案。
String s = "This text was just made RANDOMLY to show what I MEANT.";
String[] words = s.split(" |\\.");
ArrayList<String> result = new ArrayList<>();
for(String word : words) {
String wordToUpperCase = word.toUpperCase();
if(wordToUpperCase.equals(word)) {
result.add(word);
}
}
代碼行:
String[] words = s.split(" |\\.");
表示該字符串將由空格(“”)或由點(“。”)分隔。
為什么在此處需要使用破折號(轉義)的更多信息: Java字符串以“。”分隔。 (點)
如果您只用空格將字符串分開,例如:
String[] words = s.split(" ");
可能會留下令人討厭的結果,例如“ MEANT”。
無論哪種情況,結果中都包含單詞“ I”。 如果您不想這樣做,請進行檢查,以使每個單詞的長度都大於1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.