繁体   English   中英

PHP如何在某个位置替换字符串中的字符(仅)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM