Como posso verificar se um único caractere aparece em uma string?

Em Java existe uma maneira de verificar a condição:

“Esse caractere único aparece em todas as cordas x”

sem usar um loop?

   

Você pode usar string.indexOf('a') .

Se o 'a' estiver presente em string , ele retornará o índice (> = 0). Caso contrário, retorna -1. Portanto, um valor de retorno não negativo significa que 'a' is present in the string .

  • String.contains() que verifica se a string contém uma sequência especificada de valores char
  • String.indexOf() que retorna o índice dentro da string da primeira ocorrência do caractere especificado ou substring (existem 4 variações deste método)

Não tenho certeza do que o pôster original está perguntando exatamente. Como indexOf (…) e contains (…) ambos provavelmente usam loops internamente, talvez ele esteja querendo ver se isso é possível sem um loop? Eu posso pensar em dois caminhos fora de mão, um seria, claro, a recorrência:

 public boolean containsChar(String s, char search) { if (s.length() == 0) return false; else return s.charAt(0) == search || containsChar(s.substring(1), search); } 

O outro é muito menos elegante, mas a perfeição …:

 /** * Works for strings of up to 5 characters */ public boolean containsChar(String s, char search) { if (s.length() > 5) throw IllegalArgumentException(); try { if (s.charAt(0) == search) return true; if (s.charAt(1) == search) return true; if (s.charAt(2) == search) return true; if (s.charAt(3) == search) return true; if (s.charAt(4) == search) return true; } catch (IndexOutOfBoundsException e) { // this should never happen... return false; } return false; } 

O número de linhas aumenta à medida que você precisa suportar sequências de caracteres cada vez mais longas, é claro. Mas não há loops / recorrências em tudo. Você pode até remover a verificação de comprimento se estiver preocupado que esse comprimento () use um loop.

 String temp = "abcdefghi"; if(temp.indexOf("b")!=-1) { System.out.println("there is 'b' in temp string"); } else { System.out.println("there is no 'b' in temp string"); } 

Para verificar se algo não existe em uma string, você precisa pelo menos de olhar para cada caractere em uma string. Portanto, mesmo que você não use explicitamente um loop, ele terá a mesma eficiência. Dito isto, você pode tentar usar str.contains (“” + char).

Se você precisar verificar a mesma sequência, muitas vezes você pode calcular as ocorrências do caractere antecipadamente. Esta é uma implementação que usa uma matriz de bits contida em uma matriz longa:

 public class FastCharacterInStringChecker implements Serializable { private static final long serialVersionUID = 1L; private final long[] l = new long[1024]; // 65536 / 64 = 1024 public FastCharacterInStringChecker(final String string) { for (final char c: string.toCharArray()) { final int index = c >> 6; final int value = c - (index < < 6); l[index] |= 1L << value; } } public boolean contains(final char c) { final int index = c >> 6; // c / 64 final int value = c - (index < < 6); // c - (index * 64) return (l[index] & (1L << value)) != 0; }} 

Sim, usando o método indexOf () na class de string. Veja a documentação da API para este método

 package com; public class _index { public static void main(String[] args) { String s1="be proud to be an indian"; char ch=s1.charAt(s1.indexOf('e')); int count = 0; for(int i=0;i 

Você pode usar 2 methods da class String .

  • String.contains() que verifica se a string contém uma sequência especificada de valores char
  • String.indexOf() que retorna o índice dentro da string da primeira ocorrência do caractere especificado ou substring ou retorna -1 se o caractere não for encontrado (existem 4 variações deste método)

Método 1:

 String myString = "foobar"; if (myString.contains("x") { // Do something. } 

Método 2:

 String myString = "foobar"; if (myString.indexOf("x") >= 0 { // Do something. } 

Links por: Zach Scrivena

 String s="praveen"; boolean p=s.contains("s"); if(p) System.out.println("string contains the char 's'"); else System.out.println("string does not contains the char 's'"); 

Saída

 string does not contains the char 's' 
 static String removeOccurences(String a, String b) { StringBuilder s2 = new StringBuilder(a); for(int i=0;i 0;k=new String(s2).indexOf(ch)){ if(s2.charAt(k) == ch){ s2.deleteCharAt(k); System.out.println("val of s2 : "+s2.toString()); } } } System.out.println(s1.toString()); return (s1.toString()); } 
 you can use this code. It will check the char is present or not. If it is present then the return value is >= 0 otherwise it's -1. Here I am printing alphabets that is not present in the input. import java.util.Scanner; public class Test { public static void letters() { System.out.println("Enter input char"); Scanner sc = new Scanner(System.in); String input = sc.next(); System.out.println("Output : "); for (char alphabet = 'A'; alphabet < = 'Z'; alphabet++) { if(input.toUpperCase().indexOf(alphabet) < 0) System.out.print(alphabet + " "); } } public static void main(String[] args) { letters(); } 

}

 //Ouput Example Enter input char nandu Output : BCEFGHIJKLMOPQRSTVWXY Z 

É o abaixo o que você estava procurando?

 int index = string.indexOf(character); return index != -1 && string.lastIndexOf(character) != index; 

Eu usei o método string.includes () para isso que retorna true ou false se a string ou caractere for encontrado. Veja a documentação abaixo.

https://www.w3schools.com/jsref/jsref_includes.asp

// este é apenas o principal … você pode usar o leitor ou scanner

 string s; int l=s.length(); int f=0; for(int i=0;i