如何将A_B格式的字符串替换为B_A格式的字符串?

问题描述 投票:-1回答:2

我有一个字符串形式:

hello_world

需要使用以下格式的字符串:

world_hello

我知道我可能需要使用str_replace函数,但是如何准确使用它呢?也许有更好的方法?

php string reverse
2个回答
2
投票

使用preg_replace

$input = "hello_world";
$output = preg_replace("/^(.*?)_(.*)$/", "$2_$1", $input);
echo $output;

此方法在两个单独的组中捕获下划线之前和之后的术语,然后通过反转其顺序来构建输出。打印:

world_hello

这里是另一种使用explode来生成包含输入的两个部分的数组的方法:

$input = "hello_world";
$parts = explode("_", $input);
$output = $parts[1] . "_" . $parts[0];
echo $output;

0
投票

如果您在这里搜索string swap,您将找到答案swap two words in a string php

// given a string with words concatenated by "_" 
$a = "hello_world";

// chaining: explode + reverse + implode
// using "_" as delimiter to split words by
$reversed_a = implode('_', array_reverse(explode('_', $a)));

// gives swapped words: "world_hello"
var_dump($reversed_a);

Online PHP editor中尝试。

重用的通用解决方案

不使用特定单词搜索,也不限于多个单词。使用的单个参数是分隔符_检测字边界。因此它将颠倒与特定字符粘在一起的任意数量的单词。

PHP文档

使用的功能:

  • explode:用定界符字符串分割字符串并以数组形式返回
  • [array-reverse:返回具有相反顺序元素的数组
  • [implode:用胶水线连接数组元素
© www.soinside.com 2019 - 2024. All rights reserved.