Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >提取和合并不同位置之间的字符串

提取和合并不同位置之间的字符串
EN

Stack Overflow用户
提问于 2015-05-03 08:07:25
回答 2查看 87关注 0票数 0

我在努力让这件事成功。我想在给定的位置之间替换句子的某些部分,然后用变化显示整个句子。使用下面的代码,我可以进行更改,但我不知道如何将剩下的句子组合在一起。

我有两个数组,一个是显示女性名字的位置,另一个是男性名字。该代码将代词"her“替换为”her“,当一个女人在间隔之间在男人前面时。我最不需要的就是用所做的改变来重构句子,但我不知道如何提取句子的其余部分(例如,结果是从0到20 (玛丽亚的裙子)和36到51 (她的狗)的位置,但我需要从20到36 (彼得他的牛仔裤)和51到末尾(胡安他的车)合并他们的位置)。

结果应该是:“玛丽亚,她的裙子,彼得,他的牛仔裤,洛丽娜,她的狗,胡安,他的车”。我会很感激在这方面的任何帮助,我一直在寻找其他类似的问题,但我什么也没有发现。

代码语言:javascript
运行
AI代码解释
复制
<?php

$womenpos  = array("0","36"); //these arrays are just examples of positions
$menpos    = array("20","51"); //they will change depending on the sentence
$sentence  = "Maria his dress but Peter his jeans Lorena his dog Juan his car";

echo $sentence."\n";      


foreach ($womenpos as $index => $value) {
    $value2 = $menpos[$index];      

    if($value < $value2) {
        echo "\nWoman(" . $value . ") is before man(" . $value2 . ")\n";
        $end = ($value2 - $value);
        $improved = str_replace(' his ', ' her ', 
                         substr($sentence, $value, $end));                           

        echo $improved."\n";                 

    } else {
        $improved = "Nothing changed";
     echo $improved;
    }     

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-03 18:03:56

好吧,这个怎么样:

代码语言:javascript
运行
AI代码解释
复制
$womenpos  = array("0","36");
$menpos    = array("20","51");
$bothpos   = array_merge($womenpos,$menpos);
sort ($bothpos);
print_r($bothpos);

$sentence  = "Maria his dress but Peter his jeans Lorena his dog Juan his car";

echo $sentence."\n";      

for ($i = 0; $i<sizeof($bothpos); $i++) {
    $start = $bothpos[$i];
    if ($i ==sizeof($bothpos)-1) {
        $end = strlen($sentence);
    }
    else {
        $end = $bothpos[$i+1];
    }
    $length = $end-$start;
    $segment = substr($sentence, $start, $length);
    if (in_array($start, $womenpos)) {
        $new_segment = str_replace (' his ', ' her ', $segment);
    }
    else { $new_segment = $segment; }
    $improved .= $new_segment; 
    print "<li>$start-$end: $segment :  $new_segment </li>\n";
}

print "<p>Improved: $improved</p>";

这结合了男性和女性的位置数组,将每一段文本视为可能有错误的文本。如果这段文字从女性的某个点开始,那么它就把“他的”改为“她的”。如果不是的话,就让它一个人呆着。

这能让你朝着你想要的方向前进吗?要是那样就好了!

票数 1
EN

Stack Overflow用户

发布于 2015-05-03 09:02:04

这会以不同的方式处理这个问题,但我想知道它是否会提供您正在寻找的解决方案:

代码语言:javascript
运行
AI代码解释
复制
$sentence  = "Maria his dress but Peter his jeans Lorena his dog Juan his car";

$women = array ("Maria", "Lorena");

$words = explode (" ", $sentence);

for ($i=0; $i< sizeof($words); $i++) {
    if ($words[$i] == "his" && in_array($words[$i-1], $women)) {
        $words[$i] = "her";
    }
}

print (join(" ", $words));

如果前面的单词位于$women数组中,而当前的单词是"her“,则会将该单词更改为”her“。然后按照顺序把所有的单词都吐出来。

这样做可以满足您的需要,还是真的想要一个复杂的字符串定位答案?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30016065

复制
相关文章
客户端 Meteor.call 等待服务端异步函数返回
在 Meteor 项目中,经常会有客户端使用 Meteor.call 方法去调用服务端的一个方法,并等待该方法返回。通常情况下,服务端的方法只需要 return 后,客户端使用回调函数就可以访问到 return 的值了。但如果服务端同样调用了一个异步执行的函数,那么此时就无法判断服务端的异步函数是否已经执行完毕,返回结果就会出现不准确的情况。如下所示:
我与梦想有个约会
2023/10/20
2800
客户端 Meteor.call 等待服务端异步函数返回
Meteor 微信公共号开发将客户端日志传递到服务端打印
因为在微信客户端环境,我们无法使用 console.log 查看前端显示的一些调试信息,如果需要用到调试,我们一般是使用 Session 方法来给前端一个固定专门显示日志的变量设定属性,这样这个固定的变量会跟随 Session.set 设定的值而变化。后面想了一个比较方便的办法,直接将客户端需要输出的日志信息通过 Meteor.call 发送到服务端打印我们就可以方便的在服务端一起看到server log 和 client log 了。
我与梦想有个约会
2023/10/20
2010
Meteor 微信公共号开发将客户端日志传递到服务端打印
不同函数间的数据传递
        小程序不想mvc的框架一样,获取dom进行操作,只是依靠数据绑定,数据有限原则进行数据传输.
十月梦想
2018/08/29
6350
meteor 简介
“Meteor gives you a radically simpler way to build realtime mobile and web apps, entirely in JavaScript from one code base.”
IMWeb前端团队
2019/12/04
9280
meteor 简介
meteor 简介
本文作者:IMWeb helondeng 原文出处:IMWeb社区 未经同意,禁止转载 What “Meteor gives you a radically simpler way to b
IMWeb前端团队
2018/01/08
1.4K0
meteor 简介
从0开始做系统之传递数据
我们做系统,光有后台不行,还得有好看和便利的前台来操作和展示信息。前端一般是用html5和JS来控制。如果好看,你还得懂css。 后台控制数据和逻辑,前台控制交互和展示。所以前后台得通信,交换信息。这里就是讲他们如何传递数据的。 市面上的系统一般的架构都是MVC的,M指的是model,数据库这层。V是view,界面这层,C是控制逻辑这层。 如果我们打开一个网页,请求网址后,它会去C这层,去哪个路由,要什么样的业务逻辑,展现到哪个页面,都是由这层控制。先去M里面拿取数据,然后渲染到V这层,最终面对的是用户。
赵云龙龙
2019/07/11
1.5K0
从0开始做系统之传递数据
结构体数组在函数之间传递数据
明的数组,进行函数调用时,实参将数组名中存放的数组首地址传递给形参数组名。这样,实参数组名和形参名代表的是同一个结构体数组,因此在被调函数中对数组元素结构体变量的值进行修改后,回到主调函数通过实参数组名访问数组时,可以发现这个改变。
pigeon
2022/04/11
1.9K0
结构体数组在函数之间传递数据
✨从异步讲起,时间,时间,请给函数以答案!
如果你能清晰准确地回答出这3个关于异步老生常谈的经典问题,可以跳过下一小节的释义。
掘金安东尼
2022/11/07
1.1K0
✨从异步讲起,时间,时间,请给函数以答案!
聊聊reactor异步线程的变量传递
在传统的请求/应答同步模式中,使用threadlocal来传递上下文变量是非常方便的,可以省得在每个方法参数添加公用的变量,比如当前登录用户。但是业务方法可能使用了async或者在其他线程池中异步执行,这个时候threadlocal的作用就失效了。
code4it
2018/09/17
3.4K0
Golang函数参数的值传递和引用传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数
仙人技术
2021/08/31
2.6K0
Golang函数参数的值传递和引用传递
结构体类型数据在函数之间的传递
(3)结构体变量也可以作为函数的返回值,使用 return语句从被调函数返回一个结构体变
pigeon
2022/04/11
2.2K0
结构体类型数据在函数之间的传递
bootstrap typeahead 异步从后台提取数据 常用 *
<!doctype html> <html> <head> <meta charset="utf-8"> <title>联想控股</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="css/bootstrap.css" rel="stylesheet" type="text/css"> <script src="http://code.jquery.com/jquery.js"></script> <script src="js/bootstrap.js"></script> <script src="js/bootstrap3-typeahead.min.js"></script> </head> <body> <div style="margin: 50px 50px"> <input type="text" id="txtUser" name="txtUser" value="" />
用户5760343
2019/07/07
1.2K0
回调函数Callback —从同步思维切换到异步思维
这是一种非常常见的直线性思维,我先请求网站拿到 html,然后我再把 html 传给负责处理的函数。在整个过程中,“我“担任着调度的角色。
王图思睿
2021/06/16
8060
用回调函数调用异步流回调函数内的数据
本文的标题看起来也许比较绕,看不懂也没关系,后面会慢慢说明。写这篇文章是为了记录一下前几天我碰到的一个问题。
凌虚
2020/07/18
2K0
用回调函数调用异步流回调函数内的数据
【Python】函数进阶 ③ ( 函数作为参数传递 )
之前介绍的函数 , 都是 接收具体的 变量 或 字面量 数据 作为参数 , 如 : 数字 / 布尔值 / 字典 / 列表 / 元组 等 ;
韩曙亮
2023/10/11
5460
【Python】函数进阶 ③ ( 函数作为参数传递 )
Java 函数调用时值传递还是引用传递?
值传递:函数调用时,传递的参数不是实参本身,而是把参数复制一份,传递到函数中,传递的是一份拷贝。如果参数是基本类型/值类型,那么就是把这个类型拷贝一份传到函数中。如果参数是引用类型,那么拷贝的不是引用类型自身,而是这个引用的持有者。 引用传递:函数在调用时,传递的参数就是实参本身(C#中的 ref 就是这种模式)。
水货程序员
2018/11/12
3K0
高性能:MYSQL异步客户端
实时处理领域,当需要使用外部存储数据染色的时候,需要慎重对待,不能让与外部系统之间的交互延迟对流的整个进度取决定性的影响。
Spark学习技巧
2018/12/07
4.6K0
引用传递函数值
def test1(b): # 变量b一定是一个局部变量,就看它指向的是谁?可变还是不可变 b += b # += 是直接对b指向的空间进行修改,而不是让b指向一个新的 # b = b+b # xx = xx+yyy 先把=号右边的结果计算出来,然后让b指向这个新的地方,不管原来b指向谁 # 现在b一定指向这个新的地方 # a = [11, 22] a = 100 test1(a) print(a) # Python中函数参数是引用传递(注意不是值
汪凡
2018/05/29
6500
向Bash函数传递参数
除非发生语法错误或已存在同名的只读函数,否则函数定义的退出状态为零。执行时,函数的退出状态码是在主体中执行的最后一个命令的退出状态码。
程序熵
2023/09/25
2400
向Bash函数传递参数
点击加载更多

相似问题

如何在Meteor函数中获取异步数据

13

Meteor客户端异步回调

11

异步函数将数据传递给异步函数

20

React将数据从输入传递到异步函数

30

如何将数据从异步函数传递给

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档