次のようなNSString
があります。
Hello
World
of
Twitter
Lets See this
>
私はそれを次のように変換したい:
Hello World of Twitterでは、こちらをご覧ください>
これどうやってするの? iPhoneでObjective-Cを使用しています。
文字列をコンポーネントに分割し、スペースで結合します。
NSString *newString = [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] componentsJoinedByString:@" "];
文字列をコンポーネントに分割して再結合することは、これを行うための非常に長い方法です。私も、ポールが言及したのと同じ方法を使用します。任意の文字列の出現を置き換えることができます。ポールが言ったことに加えて、改行文字を次のようなスペースに置き換えることができます。
myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
私は使っています
[...]
myString = [myString stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"];
[...]
/ポール
私のケースには、\r
を含む\n
も含まれていますが、[NSCharacterSet newlineCharacterSet]
は、代わりに
htmlContent = [htmlContent stringByReplacingOccurrencesOfString:@"[\r\n]"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, htmlContent.length)];
私の問題を解決しました。
ところで、\\s
はすべての空白を削除しますが、これは予期されていません。
Swift 3.0バージョンの@hallskiの答えをここに提供:
self.content = self.content.components(separatedBy: CharacterSet.newlines).joined(separator: " ")
Swift 3.0バージョンの@Kjulyの答えをここに提供します(任意の数の新しい行を1つだけで置き換えます。\ n。誰かが私により良い方法):
self.content = self.content.replacingOccurrences(of: "[\r\\n]+", with: "\n", options: .regularExpression, range: Range(uncheckedBounds: (lower: self.content.startIndex, upper: self.content.endIndex)));