我需要一段有效的代码来删除转义字符。这是常规转义而不是HTML转义字符。
示例:“\”“,”\\\\“,”\“,”\\“
我想要一种通用算法去除任何类型的转义序列。
可以使用正则表达式之类的任何实用程序。
(NSString*) unescape:(NSString*) string {
....
}
这是我写的答案:
-(NSString*) unescape:(NSString*) string
{
for(int i = 0; i < string.length; i++) {
char a = [string characterAtIndex:i];
if([string characterAtIndex:i] == '\\' ) {
string = [string stringByReplacingCharactersInRange:NSMakeRange(i,1) withString:@""];
}
}
return string;
}
答案 0 :(得分:2)
尝试使用以下代码进行HTML转义
(NSString*) unescape:(NSString*) string
{
return [string stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}
常规逃脱
(NSString*) unescape:(NSString*) string
{
return [string stringByReplacingOccurrencesOfString:@"\\\"" withString:@"\""];
}
答案 1 :(得分:1)
您应该使用的最佳方法是:
- (NSString *)stringByTrimmingCharactersInSet:(NSCharacterSet *)set
您可以使用以下方式调用它:
string = [string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
答案 2 :(得分:0)
如果其URL编码,您可能正在寻找:
stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding
答案 3 :(得分:0)
如果您想使用正则表达式,可以尝试使用正则表达式模式\\[bntr\\\\"]
。或者在这里使用任何所需的正则表达式模式。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:
@"\\[bntr\\\\"]" options:0 error:nil];
[regex replaceMatchesInString:str options:0 range:NSMakeRange(0, [str length]) withTemplate:@""];
答案 4 :(得分:0)
我为我的回答道歉......
NSString *_string = @"\\\\ dfsdg \\ tr\\\\t \\\\\\tw\\\\\\\\w\\ t\\ \\\\ \\ \\\\\\ rret\\ \\\\ \\\\\\\\";
NSLog(@"%@", [_string stringByReplacingOccurrencesOfString:@"\\" withString:@""]);
结果是:
dfsdg trt tww t rret
答案 5 :(得分:-1)
希望这会有所帮助:
-(NSString *)unescape:(NSString *)string
{
if ([string rangeOfString:@"\\"].location != NSNotFound)
{
[string stringByReplacingCharactersInRange:@"\\" withString:@"\\"];
}
else if ([string rangeOfString:@"\\\\"].location != NSNotFound)
{
[string stringByReplacingCharactersInRange:@"\\\\" withString:@"\\"];
}
else if ([string rangeOfString:@"\\\\"].location != NSNotFound)
{
[string stringByReplacingCharactersInRange:@"\\\\" withString:@"\\"];
}
}