[英]php How can I replace a character in a string (only) when it is in a certain place?
当我var_dump的结果是:
string(3) "100" string(3) "001" string(3) "011"
现在用str_replace我可以用单词COW代替1
导致
cow00 00cow和0cowcow
但是我需要的是:
当1处于位置1时,它必须是母牛;当1处于位置2时,它需要是猪;当1处于位置3时,它必须是猪。
这将导致我正在寻找的版本:
牛0 0 0 0马0猪马
解决这个小难题的最简单方法是什么? :)
编辑:由于目标C语言的原因,此答案是非主题的。
抱歉,我不知道我是怎么想到那里的obj-c。 无论如何,逻辑可能是相同的,但对此感到抱歉。
这种方法应该可以,但是我不知道它是否是最佳方法。 我在这里打字,所以到处可能有一些错误
- (NSString *)transformStringIntoPigsAndStuff:(NSString*)baseString{
if (baseString.length >3){
return nil;
}
NSArray *arrSplitString = [baseString componentsSeparatedByString:@""];
int count = 0;
NSMutableString *finalString = [[NSMutableString alloc]init];
for (NSString *str in arrSplitString){
switch (count) {
case 0:
if (str.intValue == 1){
[finalString appendString:@"cow"];
}
break;
case 1:
if (str.intValue == 1){
[finalString appendString:@"pig"];
}
break;
case 2:
if (str.intValue == 1){
[finalString appendString:@"horse"];
}
break;
default:
break;
}
count++;
}
return finalString;
}
就像我在评论中说的那样,正则表达式不是解决此问题的最佳方法吗?
另请注意,这根本不是动态的,仅适用于三胞胎字符串。 要适应任何字符串长度,都需要做更多的工作。
@Zils在PHP中的答案:
<?php
$string = "101";
for($i=0;$i<strlen($string);$i++){
if ($i == 0 && $string[$i] == "1") {
echo "cow";
continue;
}
if ($i == 1 && $string[$i] == "1") {
echo "pig";
continue;
}
if ($i == 2 && $string[$i] == "1") {
echo "horse";
continue;
}
echo $string[$i];
}
谢谢,那行得通,但是...它仅适用于1.我需要所有人使用...
[编辑]
这是我的解决方案(包括更好的示例,例如节气门)
foreach($result as $part){
$string = $part;
for($i=0;$i<strlen($string);$i++){
if ($i == 0 && $string[$i] == 1) {
echo " break ";
continue;
}
if ($i == 1 && $string[$i] == 1) {
echo " gas ";
continue;
}
if ($i == 2 && $string[$i] == 1) {
echo " throttle ";
continue;
}
if ($i == 0 && $string[$i] == 0) {
echo " ";
continue;
}
if ($i == 1 && $string[$i] == 0) {
echo " ";
continue;
}
if ($i == 2 && $string[$i] == 0) {
echo " ";
continue;
}
echo $string[$i]."<br>"."\t";
}
echo $part."<br/>"."\t";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.