使用PHP在.txt文件中将变量的正值更改为负值并反转

使用PHP在.txt文件中将变量的正值更改为负值并反转,php,Php,我有一个.txt文件,其中包含变量X、Y、Z。它们由空格或新行分隔。它看起来像: Y-3.165 X-25.221 M8 Z32.054 Z26.57 F500 Y0.0 F1000 Y160.8 X-20.254 我需要的是将X的正值转换为负值,并将其反转(从负值转换为正值)。问题在于,变量并不总是一条直线上的单个变量,它可能是其中的2个或3个(比如:Y-3.165 X-25.221 M8) 我认为算法是: 如果(找到X)->继续,直到下一个空格字符或行尾,记录X和空格或下线之间的

我有一个.txt文件,其中包含变量X、Y、Z。它们由空格或新行分隔。它看起来像:

Y-3.165 X-25.221 M8

Z32.054

Z26.57 F500

Y0.0 F1000

Y160.8

X-20.254
我需要的是将X的正值转换为负值,并将其反转(从负值转换为正值)。问题在于,变量并不总是一条直线上的单个变量,它可能是其中的2个或3个(比如:Y-3.165 X-25.221 M8)

我认为算法是:

  • 如果(找到X)->继续,直到下一个空格字符或行尾,记录X和空格或下线之间的字符

  • 当有X-0.94这样的字符串->删除“-”否则->在X和其后的第一个数字之间添加“-”符号-


  • 但我不确定自己是否走上了正确的道路,甚至不知道如何做到这一点。你能指导我吗?

    可以分三步完成:

    $content = file_get_contents('/path/to/your/file');
    
    $content = str_replace('X-', 'X+', $content);
    $content = preg_replace('/X(\d)/', 'X-$1', $content);
    $content = str_replace('X+', 'X', $content);
    
    file_put_contents('/path/to/your/file', $content);
    

    所以你把X-变成X+,然后把所有的X,后面跟一个数字变成X-,然后把X+去掉。您必须使用X+执行该步骤,因为如果您立即将X-更改为X,则在将X更改为X-时,它将被替换。

    @Dave然后您将只得到负片,因为如果您将X-更改为X,则在反转正片时,所有内容都将被视为正片。但是你可以把X-变成X+,然后把所有的X[\d]都变成X-[\d],然后把X+@Gordon-上的+去掉,听起来不错