在iOS中使用正则表达式拆分字符串
我已经使用循环解决了这个问题,但是想要一个更清晰的答案,我希望一个reg exe大师可以帮助我.
我的原始字符串可能如下所示
NSString *originalString = @"343 a mr smith needs this work";
NSString *originalStringVerTwo = @"345a mr jones needs this work as well";
NSString *originalStringVerThree = @"345 Mrs Someone";
Run Code Online (Sandbox Code Playgroud)
我需要分成3个单独的新字符串:
例如
应该导致以下结果
第1行
NSString *one = 123a
NSString *two = mr who
NSString *three = here are some words
Run Code Online (Sandbox Code Playgroud)
第2行
NSString *one = 124b // i want the white space removed between …Run Code Online (Sandbox Code Playgroud) 我试图将数据发布到数据库,但问题是我似乎无法从用户获取在UIAlertView中输入的文本.我已经尝试了很多解决方案,例如子视图UITextField,但没有运气.这是我目前的简单配置.如果您需要更多信息,请与我们联系.
- (void)viewDidLoad
{
[super viewDidLoad];
//load site in webview
NSURLRequest *siteRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://google.com/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[webview loadRequest:siteRequest];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Welcome" message:@"Please enter your email address." delegate:self cancelButtonTitle:@"Submit" otherButtonTitles:@"Skip", nil];
alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
UITextField *emailInput = [alertView textFieldAtIndex:0];
[alertView show];
emails=emailInput.text;
// NSLog(emails);
phone=@"8675309";
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
Run Code Online (Sandbox Code Playgroud) 在处理NSStrings时,我们总是需要@在字符串的开头包含de .例如:
NSString *string = @"Hello, World!";
string是班级的一个对象NSString.
刚刚超越我的想法,@可能是重载运算符,将C字符串转换为类的对象NSString.
是这样吗?或者它只是我的小说心灵的遐想?
嗨我正在生成一个字符串,其中包含来自文本字段的文本条目.
NSString * lines = [NSString stringWithFormat:@"%@,%@,%@,%@,%@", [self.crabText text], [self.trawlText text], [self.trapText text], [self.vesselText text], [self.lengthText text]];
Run Code Online (Sandbox Code Playgroud)
当用户选择"生成CSV"UIButton后,我生成上面的字符串,后面是IBAction.但是,我想清除文本字段并将新填充的条目添加到之前的条目之上.但是,由于该函数始终创建"lines"字符串的新实例,因此仅填充当前文本字段条目.
lines = [NSString stringWithFormat: @"%@\n", lines];
Run Code Online (Sandbox Code Playgroud)
我有这个工作,把所有新的字符串放入一个数组但是想知道是否可以使用相同的字符串.一个例子是"1,1,1,1,1""新行""2,2,2,2,2".
我创建了一个子视图并实现了自定义绘图的drawRect:方法.如何实现类似于UILabel的行为,如果文本太长而无法放入框架中,则会自动添加省略号(...).
这是代码
- (void)drawRect:(CGRect)rect
{
NSDictionary *attributes = @{NSFontAttributeName : [UIFont systemFontOfSize:16.0f], NSForegroundColorAttributeName : [UIColor blackColor]};
[self.sampleText drawInRect:CGRectMake(10.0f, 10.0f, self.frame.size.width - 20.0f, self.frame.size.height - 20.0f) withAttributes:attributes];
}
Run Code Online (Sandbox Code Playgroud)
如果sampleText很长,那么它只会被剪裁以适合指定的rect.如何正确添加"..."?
试图加粗NSString的起始部分.使用下面提到的代码.
-(void)setText {
NSString *strEmail = @"Email: HR_Contact@sre.com";
NSMutableAttributedString *attributedEmail = [[NSMutableAttributedString alloc]initWithString:strEmail];
NSString *boldFontName = [[UIFont fontWithName:_fontMyriadBold size:20] fontName];
NSRange boldedRange = NSMakeRange(0, 5);
[attributedEmail beginEditing];
[attributedEmail addAttribute:NSFontAttributeName
value:boldFontName
range:boldedRange];
[attributedEmail endEditing];
lblEmailAddress.attributedText = attributedEmail;
}
Run Code Online (Sandbox Code Playgroud)
它没有任何改变.为什么这样,问题是什么,没有得到任何警告或错误.请指导.提前致谢.
我NSSet的NSString秒.我想NSSet用方法返回按字母顺序排序的元素数组– sortedArrayUsingDescriptors:.
我已阅读NSSortDescriptor文档,仍然不知道如何为简单NSString对象创建一个.
我key应该指定什么?有比使用更好的方法NSSortDescriptor吗?
我必须转换NSNumber为十六进制字符串,如下所示:
return [NSString stringWithFormat:@"%llX", self.unsignedLongLongValue];
Run Code Online (Sandbox Code Playgroud)
不幸的是,这有时会给我一个字符串,就像93728A166D1A287它们应该在哪里093728A166D1A287,这取决于数字.
提示:领先0.
我也尝试过:
return [NSString stringWithFormat:@"%16.llX", self.unsignedLongLongValue];
Run Code Online (Sandbox Code Playgroud)
没有成功.
我可以这样做,但这很糟糕:
- (NSString *)hexValue {
NSString *hex = [NSString stringWithFormat:@"%llX", self.unsignedLongLongValue];
NSUInteger digitsLeft = 16 - hex.length;
if (digitsLeft > 0) {
NSMutableString *zeros = [[NSMutableString alloc] init];
for (int i = 0; i < digitsLeft; i++) [zeros appendString:@"0"];
hex = [zeros stringByAppendingString:hex];
}
return hex;
}
Run Code Online (Sandbox Code Playgroud)
所以最后我的问题是,有没有办法强制字符串为16个字符?
我写了一个方法来突出显示一个段落NSString中的单词,通过发送一个单词,它完美地工作,直到我遇到这种情况:
当我有这个文字时:
他们的母亲试图在其他地方穿上它们......
当我传递这个词时other,"m other" 这个词正在突出显示,当我走过时,in我得到了"礼服ing".
这是我的代码:
-(void)setTextHighlited :(NSString *)txt{
NSMutableAttributedString * string = [[NSMutableAttributedString alloc]initWithString:self.textLabel.text];
for (NSString *word in [self.textLabel.text componentsSeparatedByString:@" "]) {
if ([word hasPrefix:txt]) {
NSRange range=[self.textLabel.text rangeOfString:word];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:range];
}
Run Code Online (Sandbox Code Playgroud)
我试过使用rangeOfString:options:包含所有选项,但仍然有同样的问题.
请指教
PS: 这是我的代码的来源
我的输入(NSString)可以是("text"),{("text")}或(“text”){{“text”}}.在所有这些情况下,我必须确保开始分隔符({)获得自己的结束分隔符(}).
例如,{{“text”})应标记为错误.
我正在努力NSScanner实现这一目标,并且还试图反转字符串并比较每个角色寻找相反的情况,但一直遇到一些麻烦.
什么是最好的方法?
这是我尝试过的最新方式:
NSMutableString *reversedString = [NSMutableString string];
NSInteger charIndex = [_expressionTextField.text length];
while (charIndex > 0) {
charIndex--;
NSRange subStrRange = NSMakeRange(charIndex, 1);
[reversedString appendString:[_expressionTextField.text substringWithRange:subStrRange]];
}
NSString *mystring = _expressionTextField.text;
NSLog(@"%@", reversedString);
for (int i = 0; i < reversedString.length; i++) {
if ([mystring characterAtIndex:i] == [reversedString characterAtIndex:(reversedString.length -i)]) {
NSLog(@"Closed the bracket");
}
}
Run Code Online (Sandbox Code Playgroud)