假設我有這樣的字符串:如何從任何字符串中獲取首字母縮略詞?
" Hello Word "
如何獲得的首字母縮寫「HW」不包括前端和後端的空間?
我試過用循環結構。但我想這樣做,而不使用任何for循環或拆分方法。
OP中的其他內容在評論中:
我只想得到字符串中每個單詞的第一個字母,而不考慮大小寫。如果字符串爲「喬恩雪」,我想結果爲「JS」
假設我有這樣的字符串:如何從任何字符串中獲取首字母縮略詞?
" Hello Word "
如何獲得的首字母縮寫「HW」不包括前端和後端的空間?
我試過用循環結構。但我想這樣做,而不使用任何for循環或拆分方法。
OP中的其他內容在評論中:
我只想得到字符串中每個單詞的第一個字母,而不考慮大小寫。如果字符串爲「喬恩雪」,我想結果爲「JS」
您可以使用正則表達式,但請注意,正則表達式處理確實包含內部循環。
下面將只留下信件,它們在一個單詞的開頭,然後將其轉換爲大寫:
String str = " hello World 18 times ";
String result = str.replaceAll("\\B.|\\P{L}", "").toUpperCase();
結果這裏是「HWT」。
它刪除不在其左邊的字邊界上的每個字符,以及任何不是字母的字符(這將處理空格)。結果轉換爲大寫。
RealSkeptic,雖然你的回答是正確的;他如何構思這個問題的解決方案和手段是非常深奧的。我們不應該用一個可能有2%的工程師能夠理解的正則表達式來解決這個問題。我們應該爲他提供一種通用的最佳實踐方法,這在行業中更爲常用。 –
最佳答案。它應該被接受。 –
'String result = x.replaceAll(「[az]」,「」).toUpperCase();'這也可以正常工作 – SaviNuclear
String [] tokens = "Hello World".split("[\\W]");
String newString = "";
for(String s:tokens){
newString += s.charAt(0);
}
System.out.println("Acronym - " + newString);
沒有循環新建答案 -
String[] acronym = myString.split("(?<=[\\S])[\\S]*\\s*");
使用Java默認分詞方法。標記字符串並獲取標記第一個索引處的字符。 希望這將有助於
StringTokenizer defaultTokenizer = new StringTokenizer(str);
while (defaultTokenizer.hasMoreTokens())
{
//get first letter of a token here
defaultTokenizer.nextToken(); // will get u next token
}
「StringTokenizer」類的文檔說:*「StringTokenizer」是一個遺留類,由於兼容性原因而被保留,儘管在新代碼中不鼓勵使用它。「* – RealSkeptic
這是唯一不使用'for '或'分裂'雖然。 –
OP表示無迴路 – Andreas
剛剛嘗試這一點: -
package com.test.servlet;
import java.io.IOException;
public class A1 {
public static void main(String args[])throws IOException
{
String x = "Satvir Kumar Singh ";
int c1;
String result = x.replaceAll("[a-z ]", "").toUpperCase();
System.out.println(result);
/*for (int i = 0; i < x.length(); i++) {
c1 = (int) x.charAt(i);
if(c1>=65 && c1<=96){
System.out.print(x.charAt(i));
}
}*/
}
}
你可以試試這個呢。
OP在評論中提到他希望「字符串中每個單詞的第一個字母,而不考慮大小寫」。 – Andreas
如果您可以選擇使用apache lib,請訪問以下鏈接 http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html#initials(java.lang.String)。
在使用上面提到的正則表達式之前,通過兩個選項的複雜性。此外,如果apache lib適合你,那麼不需要再次爲相同的情況旋轉輪子使用apache lib。
注意:內部/外部每個算法遍歷整個字符串。
使用WordUtils如果你擁有它,否則,使用Java 8,你可以不用循環以下(雖然它確實有一個分割):
String word = " Hello World ";
String result = Arrays.stream(word.trim().split(" "))
.map(word -> word.charAt(0))
.map(c -> c.toString().toUpperCase())
.collect(Collectors.joining());
所以你要刪除這不是任何字符大寫字母?考慮一個正則表達式... –
不,我只想得到字符串中每個單詞的第一個字母,而不考慮大小寫。如果字符串是「jon snow」,我想要結果爲「JS」 – Ishtiaq
試試這個(最後一個也許?):http://stackoverflow.com/questions/26180992/get-the-first-character-of-each -word-in-a-string – FreudianSlip