objective c - Elimine todos los espacios en blanco de NSString
objective-c cocoa (11)
He intentado deshacerme de los espacios en blanco en un NSString
, pero ninguno de los métodos que he probado funcionaron.
Tengo "this is a test"
y quiero obtener "thisisatest"
.
He usado whitespaceCharacterSet
, que se supone que elimina los espacios en blanco.
NSString *search = [searchbar.text stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
pero seguí obteniendo la misma cadena con espacios. ¿Algunas ideas?
Eso es para eliminar cualquier espacio que se encuentre al obtener texto de cualquier campo de texto, pero si desea eliminar el espacio entre cadenas, puede usar
xyz =[xyz.text stringByReplacingOccurrencesOfString:@" " withString:@""];
Reemplazará el espacio vacío sin espacio y el campo vacío se cuidará por el siguiente método:
searchbar.text=[searchbar.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Esto para mí es la mejor manera de SWIFT
let myString = " ciao /n ciao "
var finalString = myString as NSString
for character in myString{
if character == " "{
finalString = finalString.stringByReplacingOccurrencesOfString(" ", withString: "")
}else{
finalString = finalString.stringByReplacingOccurrencesOfString("/n", withString: "")
}
}
println(finalString)
y el resultado es: ciaociao
¡Pero el truco es esto!
extension String {
var NoWhiteSpace : String {
var miaStringa = self as NSString
if miaStringa.containsString(" "){
miaStringa = miaStringa.stringByReplacingOccurrencesOfString(" ", withString: "")
}
return miaStringa as String
}
}
let myString = "Ciao Ciao Ciao".NoWhiteSpace //CiaoCiaoCiao
Esto puede ayudarte si estás experimentando en lugar de (espacio en blanco). Tuve este problema cuando estaba tratando de extraer los números de teléfono de contacto del dispositivo. Necesitaba modificar la cadena phoneNumber para que no tenga espacios en blanco.
NSString* yourString = [yourString stringByReplacingOccurrencesOfString:@"/u00a0" withString:@""];
Cuando yourString
era el número de teléfono actual.
Sugiero encarecidamente colocar esto en algún lugar de su proyecto:
extension String {
func trim() -> String {
return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
}
func trim(withSet: NSCharacterSet) -> String {
return self.stringByTrimmingCharactersInSet(withSet)
}
}
Tarea fácil usando stringByReplacingOccurrencesOfString
NSString *search = [searchbar.text stringByReplacingOccurrencesOfString:@" " withString:@""];
Usa el marco debajo y quita el espacio.
#define TRIMWHITESPACE(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
en otro archivo llame a TRIM:
NSString *strEmail;
strEmail = TRIM(@" this is the test.");
Puede que te ayude ...
stringByReplacingOccurrencesOfString reemplazará todo el espacio en blanco con en la cadena no solo el inicio y el final
Utilizar
[YourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]
stringByTrimmingCharactersInSet
solo elimina caracteres del principio y del final de la cadena, no de los que están en el medio.
1) Si necesita eliminar solo un carácter dado (digamos el carácter de espacio) de su cadena, use:
[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]
2) Si realmente necesita eliminar un conjunto de caracteres (es decir, no solo el carácter de espacio, sino cualquier espacio en blanco como espacio, tabulación, espacio irrompible, etc.), podría dividir su cadena usando whitespaceCharacterSet
luego unir las palabras nuevamente en una cuerda:
NSArray* words = [yourString componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString* nospacestring = [words componentsJoinedByString:@""];
Tenga en cuenta que esta última solución tiene la ventaja de manejar cada carácter de espacios en blanco y no solo espacios, pero es un poco menos eficiente que el stringByReplacingOccurrencesOfString:withString:
Por lo tanto, si realmente solo necesita eliminar el carácter de espacio y está seguro de que no tendrá ningún otro carácter de espacio en blanco que el espacio en blanco, use el primer método.
Prefiero usar expresiones regulares como esta:
NSString *myString = @"this is a test";
NSString *myNewString = [myString stringByReplacingOccurrencesOfString:@"//s"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [myStringlength])];
//myNewString will be @"thisisatest"
Puede hacerse una categoría en NSString para hacer la vida aún más fácil:
- (NSString *) removeAllWhitespace
{
return [self stringByReplacingOccurrencesOfString:@"//s" withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, [self length])];
}
Aquí hay un método de prueba unitaria también:
- (void) testRemoveAllWhitespace
{
NSString *testResult = nil;
NSArray *testStringsArray = @[@""
,@" "
,@" basicTest "
,@" another Test /n"
,@"a b c d e f g"
,@"/n/tA/t/t /t /nB /f C /t ,d,/ve F/r/r/r"
,@" landscape, portrait, ,,,up_side-down ;asdf; lkjfasdf0qi4jr0213 ua;;;;af!@@##$$ %^^ & * * ()+ + "
];
NSArray *expectedResultsArray = @[@""
,@""
,@"basicTest"
,@"anotherTest"
,@"abcdefg"
,@"ABC,d,eF"
,@"landscape,portrait,,,,up_side-down;asdf;lkjfasdf0qi4jr0213ua;;;;af!@@##$$%^^&**()++"
];
for (int i=0; i < [testStringsArray count]; i++)
{
testResult = [testStringsArray[i] removeAllWhitespace];
STAssertTrue([testResult isEqualToString:expectedResultsArray[i]], @"Expected: /"%@/" to become: /"%@/", but result was /"%@/"",
testStringsArray[i], expectedResultsArray[i], testResult);
}
}
- (NSString *)removeWhitespaces {
return [[self componentsSeparatedByCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]]
componentsJoinedByString:@""];
}
pStrTemp = [pStrTemp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];