我是新的java字符串处理操作。
让我们考虑一个字符串包含的0,1的,2个的像下面秀
String content = "0011221100";
你可能会问我,你为什么不将它存储在整数的一个问题,因为在我的情况下,我应该只使用字符串。
输出是:
0's:4
1's:4
2's:2
我怎样才能实现这一目标。
如果你只需要搜索qazxsw POI所以你可以尝试这样的事:
1's,0's,2's
遍历您 String content = "0011221100";
int zeros = content.length() - content.replaceAll("0", "").length();
int ones = content.length() - content.replaceAll("1", "").length();
int twos = content.length() - content.replaceAll("2", "").length();
System.out.println("0's:" + zeros);
System.out.println("1's:" + ones);
System.out.println("3's:" + twos);
的字符使用String
。
对于每一个字符,检查它是否使用toCharArray()
一个数字
递增你发现这个数字OCCURENCES的数量(可以使用10个时隙的阵列Character.isDigit
和int
将是有用的)。
如果你知道,只有在你的Character.getNumericValue
位,第2步是没用的。
你可以试试这个方法。
String
输出地说:
String content = "0011221100";
Map<String,Integer> count=new HashMap<>();
for(char i:content.toCharArray()){
Integer index=count.get(String.valueOf(i));
if(index!=null){
count.put(String.valueOf(i),index+1);
}else {
count.put(String.valueOf(i),1);
}
}
System.out.println(count);
我建议尝试以下方法:
{2=2, 1=4, 0=4}
现在,你可以简单的问了索引,并获得数量与字符串值=指数。
我不得不提到的是,int[] amountOfNumbers = new int[3];
for(int i = 0; i < content.length(); i++){
// Index 0 representing the number of 0s , Index 1 ..... and so on
amountOfNumbers[content.charAt(i)-'0']++;
}
必须有相同数量的条目,因为在你的字符串不同的号码。
如果您想进一步的信息,你可以阅读维基百科的文章计数排序:int[] array
。我的方法是圆差不多全无事后分类整理。
这种方法适用永远如果你知道数字字符串组成的范围内。
public static void SymbolCounter( String source_ ) throws ParseException
{
Map<Character, Integer> symbolCounter = new HashMap<Character, Integer>();
for( int i = 0 ; i < source_.length() ; ++i )
{
Character symbol = source_.charAt( i );
Integer counter = symbolCounter.get( symbol );
if( null == counter )
{
counter = new Integer( 1 );
}
else
{
counter = counter + 1;
}
symbolCounter.put( symbol, counter );
}
Set<Character> kyes = symbolCounter.keySet();
for( Character symbol : kyes )
{
Integer counter = symbolCounter.get( symbol );
System.out.println( symbol.toString() + "'s:" + counter.toString() );
}
}
你去那里:
for (i=0;i<10;i++){
reg=new RegExp("[^" + i + "]",'g');
console.log(" " + i + "'s:" + content.replace(reg,"").length);
}
我知道这是振兴死马,但现在有一个与Java流的另一种选择。
void PrintCount(String content)
{
int[] histogram = new int[10];
for (int i=0; i<10; i++)
histogram[i] = 0;
for (char c : content.toCharArray())
{
if ('0' <= c && c <= '9')
histogram[c-'0']++;
}
for (int i=0; i<10; i++)
System.out.println(i+"'s:"+histogram[i]);
}
如果应用了Java 8个或更高版本中,您可以使用此:
"0011221100".chars().boxed().collect(
Collectors.groupingBy(Character::getNumericValue, Collectors.counting()));