php当字符串中的字符位于某个位置时,如何替换它(仅限)?

php当字符串中的字符位于某个位置时,如何替换它(仅限)?,php,string,replace,Php,String,Replace,I var_dump时的结果是: string(3) "100" string(3) "001" string(3) "011" 现在有了str_replace,我可以用单词COW来代替1 导致 cow00和0cowcow 但我需要的是: 当1处于位置1时,它需要为cow 当1处于位置2时,需要清管器 当1处于位置3时,它需要是马 这将导致我正在寻找的版本: 母牛0 0匹马 0猪马 解决这个小难题最简单的方法是什么?:) 编辑:由于使用OBJECTIVE-C语言,此答案与主题无关。 对不起,

I var_dump时的结果是:

string(3) "100" string(3) "001" string(3) "011" 
现在有了str_replace,我可以用单词COW来代替1

导致

cow00和0cowcow

但我需要的是:

当1处于位置1时,它需要为cow 当1处于位置2时,需要清管器 当1处于位置3时,它需要是马

这将导致我正在寻找的版本:

母牛0 0匹马 0猪马


解决这个小难题最简单的方法是什么?:)

编辑:由于使用OBJECTIVE-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;
}
就像我在评论中说的,正则表达式不是解决这个问题的最好方法吗


还要注意,这根本不是动态的,只适用于三元组字符串。要适应任何字符串长度都需要做更多的工作。

编辑:由于使用OBJECTIVE-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;
}
就像我在评论中说的,正则表达式不是解决这个问题的最好方法吗


还要注意,这根本不是动态的,只适用于三元组字符串。要适应任何字符串长度都需要做更多的工作。

编辑:由于使用OBJECTIVE-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;
}
就像我在评论中说的,正则表达式不是解决这个问题的最好方法吗


还要注意,这根本不是动态的,只适用于三元组字符串。要适应任何字符串长度都需要做更多的工作。

编辑:由于使用OBJECTIVE-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];
    }
@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];
    }
@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];
    }
@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作为$part){
$string=$part;

对于($i=0;$i谢谢,这很有效,但是。。。 它只适用于1。我需要它的所有

[已编辑]

这是我的解决方案(包括一个更好的例子,油门断开)

foreach($result作为$part){
$string=$part;

对于($i=0;$i谢谢,这很有效,但是。。。 它只适用于1。我需要它的所有

[已编辑]

这是我的解决方案(包括一个更好的例子,油门断开)

foreach($result作为$part){
$string=$part;

对于($i=0;$i谢谢,这很有效,但是。。。 它只适用于1。我需要它的所有

[已编辑]

这是我的解决方案(包括一个更好的例子,油门断开)

foreach($result作为$part){
$string=$part;


对于($i=0;$iI对正则表达式是新手,但这种情况不是专为正则表达式设计的吗?否则,字符串到数组,逐个检查元素,将100%工作,易于实现,但可能不是最有效的。你说的是PHP吗?该死的,我完全离题了,我用obj-C回答。今天不是我的日子……在PHP中,你也可以字符串上的p作为字符数组
for($i=0;$iI对正则表达式是新手,但这种情况不是专为正则表达式设计的吗?否则,字符串到数组,逐个检查元素,将100%工作,易于实现,但可能不是最有效的。你说的是PHP吗?该死的,我完全离题了,我用obj-C回答。今天不是我的日子……在PHP中,你也可以字符串上的p作为字符数组
for($i=0;$iI对正则表达式是新手,但这种情况不是专为正则表达式设计的吗?否则,字符串到数组,逐个检查元素,将100%工作,易于实现,但可能不是最有效的。你说的是PHP吗?该死的,我完全离题了,我用obj-C回答。今天不是我的日子……在PHP中,你也可以字符串上的p作为字符数组
for($i=0;$iI对正则表达式是新手,但这种情况不是专为正则表达式设计的吗?否则,字符串到数组,逐个检查元素,将100%工作,易于实现,但可能不是最有效的。你说的是PHP吗?该死的,我完全离题了,我用obj-C回答。今天不是我的日子……在PHP中,你也可以字符串上的p作为($i=0;$i)的字符数组