Objective C Escape/неEscape HTML

Многое из того, что вам нужно, уже готово для вас, у вас уже есть обработчики щелчков, поэтому, когда щелкают 0:

if (mouseIsPressed && (mouseX > 0 && mouseX < w/5 && mouseY > h1*6.6 && mouseY < h)) {
    fill(255);
  } else {
    fill(0);
  }
}

Что бы я сделал это создание массива для пользовательского ввода, и каждая кнопка, которую пользователь нажимает, просто добавляет ее в массив

let userInput = []; // declared above the setup function
....

if (mouseIsPressed && (mouseX > 0 && mouseX < w/5 && mouseY > h1*6.6 && mouseY < h)) {
    userInput.push(0); // add the nubmer to the array
    fill(255);
  } else {
    fill(0);
 }

Затем вы можете перебрать этот массив в цикле отрисовки, чтобы вывести его, что-то вроде: [115 ]

let startX = 0;
for (let input of userInput) {
    text(input, startX, 100);
    startX += 10;
}
74
задан Peter Hosey 3 March 2010 в 14:44
поделиться

5 ответов

Этот ссылка содержит решение ниже. CF какао сделал, чтобы CFXMLCreateStringByUnescapingEntities функционировал, но это не доступно на iPhone.

@interface MREntitiesConverter : NSObject <NSXMLParserDelegate>{
    NSMutableString* resultString;
}

@property (nonatomic, retain) NSMutableString* resultString;

- (NSString*)convertEntitiesInString:(NSString*)s;

@end


@implementation MREntitiesConverter

@synthesize resultString;

- (id)init
{
    if([super init]) {
        resultString = [[NSMutableString alloc] init];
    }
    return self;
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)s {
        [self.resultString appendString:s];
}

- (NSString*)convertEntitiesInString:(NSString*)s {
    if (!s) {
        NSLog(@"ERROR : Parameter string is nil");
    }
    NSString* xmlStr = [NSString stringWithFormat:@"<d>%@</d>", s];
    NSData *data = [xmlStr dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSXMLParser* xmlParse = [[[NSXMLParser alloc] initWithData:data] autorelease];
    [xmlParse setDelegate:self];
    [xmlParse parse];
    return [NSString stringWithFormat:@"%@",resultString];
}

- (void)dealloc {
    [resultString release];
    [super dealloc];
}

@end
30
ответ дан Thomas 24 November 2019 в 11:51
поделиться

MREntitiesConverter не работает для экранирования искаженного xml. Ошибка при использовании простого URL:

http://www.google.com/search?client=safari&rls=en&q=fail&ie=UTF-8&oe=UTF-8

0
ответ дан 24 November 2019 в 11:51
поделиться

Указанный выше MREntitiesConverter - это инструмент для удаления HTML, а не кодировщик.

Если вам нужен кодировщик, перейдите сюда: Кодировать NSString для XML / HTML

1
ответ дан 24 November 2019 в 11:51
поделиться

Посмотрите мою категорию NSString для XMLEntities . Существуют методы для декодирования сущностей XML (включая все ссылки на символы HTML), кодирования сущностей XML, удаления тегов и удаления новых строк и пробелов из строки:

- (NSString *)stringByStrippingTags;
- (NSString *)stringByDecodingXMLEntities; // Including all HTML character references
- (NSString *)stringByEncodingXMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;
90
ответ дан 24 November 2019 в 11:51
поделиться

Это простая в использовании реализация категории NSString:

Она далеко не полная, но вы можете добавить некоторые недостающие сущности отсюда: http://code.google.com/p/statz/source/browse/trunk/NSString%2BHTML.m

Usage:

#import "NSString+HTML.h"

NSString *raw = [NSString stringWithFormat:@"<div></div>"];
NSString *escaped = [raw htmlEscapedString];
2
ответ дан 24 November 2019 в 11:51
поделиться