NSString com \ n ou quebra de linha

100

Alguém sabe como usar quebras de linha em NSString? Eu preciso fazer algo assim -

[NSString stringWithFormat:@"%@,\n%@", mystring1,mystring2];
Dave
fonte
11
Você realmente tentou isso? Porque se tivesse, você teria obtido sua resposta.
Dave DeLong
não, não funcionou. vejo o \ n anexado à string, mas quando ele renderiza, está na mesma linha.
Dave
4
Certifique-se de que esta mensagem do tipo NSString que você está exibindo não use suporte a HTML. Se estiver usando suporte a HTML, não tratará \ n. Espero ser útil. Obrigado, Aby
Abdul Yasin

Respostas:

177

Acabei de ter o mesmo problema ao sobrecarregar -descrição para uma subclasse de NSObject. Nessa situação, consegui usar o retorno de carro (\ r) em vez de nova linha (\ n) para criar uma quebra de linha.

[NSString stringWithFormat:@"%@\r%@", mystring1,mystring2];

Anthony F
fonte
1
perfeito! Observe que você tem uma vírgula desnecessária após o primeiro% @
Sam Spencer
1
@OMGPOP, observe que, para o desenvolvimento do iOS, você também precisa verificar minha resposta abaixo.
Andy A
Perfeito funcionou para mim, muito obrigado por compartilhar isso.
swiftBoy de
32

Se sua string vai em um UIView (por exemplo, um UILabel), você também precisa definir o número de linhas para 0

myView.numberOfLines=0;
Andy A
fonte
26

Descobri que quando estava lendo strings de um .plistarquivo, ocorrências de "\n"foram analisadas como "\\n". A solução para mim foi substituir as ocorrências de "\\n"por "\n". Por exemplo, dada uma instância de NSStringnamed myStringread in do meu .plistarquivo, eu tive que chamar ...

myString = [myString stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];

... antes de atribuí-lo à minha UILabelinstância ...

myLabel.text = myString;
Adil Hussain
fonte
2
Este foi o meu cenário exato, Adil. Obrigado pela sua resposta!
iOS4Life
12
NSString *str1 = @"Share Role Play Photo via Facebook, or Twitter for free coins per photo.";
NSString *str2 = @"Like Role Play on facebook for 50 free coins.";
NSString *str3 = @"Check out 'What's Hot' on other ways to receive free coins";


NSString *msg = [NSString stringWithFormat:@"%@\n%@\n%@", str1, str2, str3];
Mohit
fonte
8

tente isto (stringWithFormat tem que começar com letras minúsculas)

 [NSString stringWithFormat:@"%@\n%@",string1,string2];
Mel
fonte
2

\ n \ r parece funcionar para mim.

Estou usando o Xcode 4.6 com IOS 6.0 como destino. Testado no iPhone 4S. Experimente você mesmo.

Feng Chiu

us_david
fonte
1
isto não é uma resposta .. por favor escreva nos comentários.
Shivaay,
2

O caractere de quebras de linha para NSString é \ r

maneira correta de usar [NSString StringWithFormat:@"%@\r%@",string1,string2];

\ r ----> retorno de carro

Chamath Jeevan
fonte
"StringWithFormat" é inválido; deve ser "stringWithFormat" (deve começar com 's' minúsculo)
SpokaneDude
0

\né a forma preferida de quebrar uma linha. \rvai funcionar também. \n\rou \r\nsão exageros e podem causar problemas mais tarde. Cacau, tem parágrafo específico e caracteres de quebra de linha para usos específicos NSParagraphSeparatorCharacter, NSLineSeparatorCharacter. Aqui está minha fonte para todos os itens acima.

Mahboudz
fonte
0

No Swift 3, é muito mais simples

let stringA = "Terms and Conditions"
let stringB = "Please read the instructions"

yourlabel.text =  "\(stringA)\n\(stringB)"

ou se você estiver usando um textView

yourtextView.text =  "\(stringA)\n\(stringB)"
Naishta
fonte
Post é especificamente rotulado para Objective-C.
dylan
0

No caso de \ n ou \ r não estar funcionando e se você estiver trabalhando com uiwebview e tentando carregar html usando a tag <br> para inserir uma nova linha. Não use apenas a tag <br> em NSString stringWithFormat.

Em vez disso, use o mesmo anexando. ou seja, usando stringByAppendingString

 yourNSString = [yourNSString stringByAppendingString:@"<br>"];
iPhoneDeveloper
fonte