restricciones pantalla olvide hora eliminar como color codigo cambio cambiar iphone objective-c cocoa string

olvide - mi iphone cambio de color la pantalla



¿Cómo puedo truncar un NSString a una longitud establecida? (10)

Parece un poco delicado (se bloquea si el hilo es más corto que la longitud máxima)

Entonces, ¿por qué no arreglar esa parte?

NSRange stringRange = {0, MIN([myString length], 20)};

Busqué, pero sorprendentemente no pude encontrar una respuesta.

Tengo un NSString largo que quiero acortar. Quiero que la longitud máxima sea de alrededor de 20 caracteres. Leí en alguna parte que la mejor solución es usar substringWithRange . ¿Es esta la mejor manera de truncar una cadena?

NSRange stringRange = {0,20}; NSString *myString = @"This is a string, it''s a very long string, it''s a very long string indeed"; NSString *shortString = [myString substringWithRange:stringRange];

Parece un poco delicado (se bloquea si el hilo es más corto que la longitud máxima). Tampoco estoy seguro de si es seguro para Unicode. Hay una mejor manera de hacerlo? ¿Alguien tiene una buena categoría para esto?


Swift 4

let trimToCharacter = 20 let shortString = String(myString.prefix(trimToCharacter))

Feliz Codificación.


Dado que esta respuesta no está realmente en esta lista, es el más simple y el más sensible:

NSString *myString = @"This is a string, it''s a very long string, it''s a very long string indeed"; myString = (myString.length > 20) ? [myString substringToIndex:20] : myString;


En realidad, la parte de ser "segura para Unicode" estaba muerta, ya que muchos personajes se combinan en unicode, lo que las respuestas sugeridas no consideran.

Por ejemplo, si quieres escribir é. Una forma de hacerlo es escribiendo "e" (0x65) + combinando acento "" (0x301). Ahora, si escribe "café" de esta manera y trunca 4 caracteres, obtendrá "café". Esto podría causar problemas en algunos lugares.

Si no te importa esto, otras respuestas funcionan bien. De lo contrario, haz esto:

// define the range you''re interested in NSRange stringRange = {0, MIN([myString length], 20)}; // adjust the range to include dependent chars stringRange = [myString rangeOfComposedCharacterSequencesForRange:stringRange]; // Now you can create the short string NSString *shortString = [myString substringWithRange:stringRange];

Tenga en cuenta que de esta forma su rango puede ser más largo que su longitud de rango inicial. En el ejemplo anterior de la cafetería, su rango se ampliará a una longitud de 5, aunque todavía tenga 4 "glifos". Si necesitas tener una longitud inferior a la que indicaste, debes verificar esto.


La solución más simple y agradable (con 3 puntos al final del texto):

NSString *newText = [text length] > intTextLimit ? [[text substringToIndex:intTextLimit] stringByAppendingString:@"..."] : text;


Podría usar una operación ternaria:

NSString *shortString = (stringRange.length <= [myString length]) ? myString : [myString substringWithRange:stringRange];

O para un mayor control sobre el resultado final:

if (stringRange.length > [myString length]) // throw exception, ignore error, or set shortString to myString else shortString = [myString substringWithRange:stringRange];


Si desea truncar desde el uso final:

[fileName substringToIndex:anyNumber];

Si quieres truncar desde el inicio:

[fileName substringFromIndex:anyNumber];


Todas las operaciones de NSString son seguras para Unicode, ya que NSString es esencialmente una matriz unichar internamente. Incluso si la cadena está en una codificación diferente, se convierte a la codificación especificada cuando se muestra.


Una solución más corta es:

NSString *shortString = ([myString length]>MINLENGTH ? [myString substringToIndex:MINLENGTH] : myString);


//Short the string if string more than 45 chars if([self.tableCellNames[indexPath.section] length] > 40) { // define the range you''re interested in NSRange stringRange = {0, MIN([self.tableCellNames[indexPath.section] length], 40)}; // adjust the range to include dependent chars stringRange = [self.tableCellNames[indexPath.section] rangeOfComposedCharacterSequencesForRange:stringRange]; // Now you can create the short string NSString *shortStringTitle = [self.tableCellNames[indexPath.section] substringWithRange:stringRange]; shortStringTitle = [shortStringTitle stringByAppendingString:@"..."]; titleLabel.text = shortStringTitle; } else { titleLabel.text = self.tableCellNames[indexPath.section]; }

// VKJ