¿Cómo puedo verificar si aparece un solo carácter en una cadena?

En Java hay una forma de verificar la condición:

“¿Este único carácter aparece en la cadena x”

sin usar un bucle?

Puede usar string.indexOf('a') .

Si la 'a' está presente en una string , devuelve el índice (> = 0). Si no, devuelve -1. Entonces, un valor de retorno no negativo significa que 'a' is present in the string .

  • String.contains() que comprueba si la cadena contiene una secuencia especificada de valores de char
  • String.indexOf() que devuelve el índice dentro de la cadena de la primera aparición del carácter o subcadena especificado (hay 4 variaciones de este método)

No estoy seguro de qué es lo que el cartel original está preguntando exactamente. Como indexOf (…) y contains (…) ambos probablemente usan bucles internamente, ¿quizás está buscando ver si esto es posible sin un bucle? Puedo pensar en dos formas de la mano, una sería, por supuesto, recurrsion:

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

El otro es mucho menos elegante, pero completo …

 /** * 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; } 

El número de líneas crece a medida que necesita para admitir cadenas cada vez más largas, por supuesto. Pero no hay bucles / recurrencias en absoluto. Incluso puede eliminar la verificación de longitud si le preocupa que esa longitud () utilice un bucle.

 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 comprobar si algo no existe en una cadena, al menos necesita mirar cada carácter en una cadena. Entonces, incluso si no usa explícitamente un bucle, tendrá la misma eficacia. Dicho esto, puedes intentar usar str.contains (“” + char).

Si necesita verificar la misma cadena a menudo, puede calcular las ocurrencias de los caracteres por adelantado. Esta es una implementación que usa una matriz de bits contenida en una matriz larga:

 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; }} 

Sí, usando el método indexOf () en la clase de cadena. Ver la documentación 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 

Puedes usar 2 métodos de la clase String .

  • String.contains() que comprueba si la cadena contiene una secuencia especificada de valores de char
  • String.indexOf() que devuelve el índice dentro de la cadena de la primera aparición del carácter o subcadena especificada o devuelve -1 si el carácter no se encuentra (hay 4 variaciones de este 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. } 

Enlaces de: 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'"); 

Salida

 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 

¿Está debajo lo que estabas buscando?

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

Utilicé el método string.includes () para esto que devuelve verdadero o falso si se encuentra la cadena o el carácter. Ver la documentación a continuación.

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

// esto es solo el principal … puedes usar un lector o escáner con memoria intermedia

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