java - saber - ¿Cómo puedo verificar si aparece un solo carácter en una cadena?
saber si una cadena contiene numeros java (15)
¿Está debajo lo que estabas buscando?
int index = string.indexOf(character);
return index != -1 && string.lastIndexOf(character) != index;
En Java hay una forma de verificar la condición:
"¿Este único carácter aparece en la cadena x"
sin usar un bucle?
// 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<l;i++)
{
char ch1=s.charAt(i);
for(int j=0;j<l;j++)
{
char ch2=charAt(j);
if(ch1==ch2)
{
f=f+1;
s.replace(ch2,'''');
}
f=0;
}
}
//if replacing with null does not work then make it space by using '' '' and add a if condition on top.. checking if its space if not then only perform the inner loop...
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.
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).
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:
Sí, usando el método indexOf () en la clase de cadena. Ver la documentación API para este método
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;
}}
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.
Puede usar string.indexOf(''a'')
.
Si la
''a''
está presente en unastring
, devuelve el índice (> = 0). Si no, devuelve -1. Entonces, un valor de retorno no negativo significa que''a'' is present in the string
.
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''
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");
}
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<s1.length();i++) {
if(s1.charAt(i)==''e''){
System.out.println("number of E:=="+ch);
count++;
}
}
System.out.println("Total count of E:=="+count);
}
}
static String removeOccurences(String a, String b)
{
StringBuilder s2 = new StringBuilder(a);
for(int i=0;i<b.length();i++){
char ch = b.charAt(i);
System.out.println(ch+" first index"+a.indexOf(ch));
int lastind = a.lastIndexOf(ch);
for(int k=new String(s2).indexOf(ch);k > 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 :
B C E F G H I J K L M O P Q R S T V W X Y Z
-
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)