我已经知道如何替换给定索引处的字符,但我希望将所有字符替换为给定索引处的字符。
例如,我有字符串@interface ImagesTableViewController : UITableViewController
@property(nonatomic,strong) NSArray* images;
@end
@implementation ImagesTableViewController
- (void)viewDidLoad {
self.images = [dbManager getImages];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.images.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];
}
cell.imageView.image = self.images[indexpath.row];
return cell;
}
@end
,并希望用"011010010"
替换每个字符,但第一次出现"0"
除外。我使用"1"
查找第一个String#index("1")
的索引,但是从那里开始,如何将字符串更改为"1"
?
答案 0 :(得分:2)
你可以用零替换所有的那些,然后改变你想要保留的角色:
test = "011010010"
testIndex = test.index("1")
test.gsub!("1", "0")
test[testIndex] = "1"
答案 1 :(得分:2)
str = "011010010"
str[/0*1/].ljust(str.size,'0')
#=> "010000000"
答案 2 :(得分:1)
一种方法是创建一个包含所有0
值的新字符串,其长度与原始字符串的长度相同,然后将第一个索引替换为1
:
str = "011010010"
first_one = str.index("1")
str = "0" * str.length
str[first_one] = "1"
puts str
#=> 010000000
答案 3 :(得分:1)
flag = false
"011010010".gsub(/./){|s| (flag ? "0" : s).tap{flag = true if s == "1"}}
答案 4 :(得分:1)
test = "011010010"
test.sub(/(0*1)(.*)/) { $1 << '0'*$2.length }
#⇒ "010000000"
test =~ /1/ && $` << '1' << '0'*$'.length || test # C'`mon parser
#⇒ "010000000"
答案 5 :(得分:0)
也许是这样的,在第一场比赛后只改变角色:
str = "010010110"
first_occurence = str.index('1')
results = "#{str[0..first_occurence]}#{str[first_occurence..-1].gsub('1','0')}"
我认为这有一些聪明的正则表达式,但不确定会是什么。