假设我有这样的字符串:如何从任何字符串中获取首字母缩略词?
" 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