从字符串中查找单词的下一个单词

2024-02-27

我编写了以下代码来从 Java 字符串中获取下一个单词。我觉得它非常原始,我不应该为此编写这么多代码,但找不到任何其他方法。想知道是否有更好的方法可以做到这一点:

public static String getNextWord(String str, String word) {
    String nextWord = null;
    // to remove multi spaces with single space
    str = str.trim().replaceAll(" +", " ");
    int totalLength = str.length();
    int wordStartIndex = str.indexOf(word);
    if (wordStartIndex != -1) {
        int startPos = wordStartIndex + word.length() + 1;
        if (startPos < totalLength) {
            int nextSpaceIndex = str.substring(startPos).indexOf(" ");
            int endPos = 0;
            if (nextSpaceIndex == -1) {
                // we've reached end of string, no more space left
                endPos = totalLength;
            } else {
                endPos = startPos + nextSpaceIndex;
            }
            nextWord = str.substring(startPos, endPos);
        }
    }
    return nextWord;
}

注意:输入单词可以是任何内容(多个单词、单个单词、不在字符串中的单词等)。

Test:

    String text = "I am very happy with life";

    System.out.println(StringUtil.getNextWord(text, "I"));
    System.out.println(StringUtil.getNextWord(text, "I am"));
    System.out.println(StringUtil.getNextWord(text, "life"));
    System.out.println(StringUtil.getNextWord(text, "with"));
    System.out.println(StringUtil.getNextWord(text, "fdasfasf"));
    System.out.println(StringUtil.getNextWord(text, text));

Output:

am
very
null
life
null
null

这听起来像是正则表达式的工作。像这样的事情:

public static String getNextWord(String str, String word){
    Pattern p = Pattern.compile(word+"\\W+(\\w+)");
    Matcher m = p.matcher(str);       
    return  m.find()? m.group(1):null;      
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从字符串中查找单词的下一个单词 的相关文章

  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 当从服务类中调用时,Spring @Transactional 不适用于带注释的方法

    在下面的代码中 当方法内部 是从内部调用的方法外部 应该在交易范围内 但事实并非如此 但当方法内部 直接从调用我的控制器class 它受到事务的约束 有什么解释吗 这是控制器类 Controller public class MyContr
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树

随机推荐

  • 显式非单参数构造函数

    谁能解释为什么非单参数构造函数标记为显式编译 据我了解 这在这里绝对是无用的关键字 那么为什么它编译时没有错误呢 class X public explicit X int a int b 在 C 03 中 在这种特殊情况下 标记两个参数构
  • wxWidgets:如何捕捉wxListCtrl上的左键单击?

    我想将复选框添加到 wxListCtrl 这工作正常 只是当鼠标单击项目时似乎没有 EVT LIST ITEM CLICK 或 EVT LIST ITEM LEFT CLICK 事件来捕获 以便可以切换图像 有右键单击和中键单击的事件 但没
  • PHP CURL - 如何判断请求的整个文件是否未完全下载

    我使用 CURL 和代理来获取一些 xml 文件 有时当我尝试加载 使用 xml simplexml load string 时 只有部分 XML 文档会通过并失败 我想像 if curl errno ch error curl error
  • jQuery - 即使单击列表也会触发,但不会触发嵌入其中的复选框

    我正在制作一个简单的网络应用程序 在一部分中 我动态创建了一个列表 然后我有一个事件 当单击列表中的任何元素时会触发 document on click list not checkbox function console log list
  • 递归块过早释放

    我写了一个递归块如下these http ddeville me 2011 10 recursive blocks objc 指导方针 NSMutableArray groups NSMutableArray arrayWithArray
  • 从 Dns.GetHostEntry() 获取 IPv4 地址

    我这里有一些代码在 IPv4 机器上运行得很好 但在我们的构建服务器 IPv6 上却失败了 简而言之 IPHostEntry ipHostEntry Dns GetHostEntry string Empty GetHostEntry 的文
  • C++ 返回字符串不断出现垃圾

    为什么这里的返回字符串上有各种垃圾 string getChunk ifstream in char buffer 5 for int x 0 x lt 5 x buffer x in get cout lt lt x lt lt lt l
  • 未找到符号:__PyCodecInfo_GetIncrementalDecoder

    自从从 Homebrew Python 2 7 11 从 2 7 10 开始 更新后 我突然无法从 PyCharm IDE 控制台在 PyPi 上测试注册我的包 运行 作为 外部工具 python B setup py register r
  • 显示 Pandas 数据框的所有行和列[重复]

    这个问题在这里已经有答案了 我正在 Visual Studio 代码中使用 python 3 和 pandas 包 但 print 函数无法正确显示 例如 当我使用 df head 时 它看起来不错 但是 如果我使用 print 语句 我将
  • 在哪里可以找到被新功能弃用的 Android 功能列表?

    Android 开发者网站中是否有某些内容显示了 API 中的某些附加功能已弃用的内容 例如 一个人如何知道 Fragment 不赞成使用什么内容 Update 新的发行说明可以在此处的新 URL 上以更易于阅读的格式获取 https de
  • 从字符串中删除非 utf8 字符

    我在从字符串中删除非 utf8 字符时遇到问题 这些字符无法正确显示 字符是这样的 0x97 0x61 0x6C 0x6F 十六进制表示 去除它们的最佳方法是什么 正则表达式还是其他什么 如果您申请utf8 encode 对于已经是 UTF
  • 带有计算属性名称的 Typescript setState

    我正在使用 Typescript 2 1 我有一个带有 2 个数字集合的状态的 React 组件 我不想重复 addItem 和 removeItem 方法并希望它们是通用的 这是代码 type Collection challenges
  • 如何将 pyinstaller 与 pipeline/pyenv 一起使用

    我正在尝试从我的 python 脚本中发送一个可执行文件 该脚本位于使用 pipelinev 的虚拟环境中 它再次依赖 pyenv 进行 python 版本控制 为此 我想要使用 pyinstaller 我做了什么 pipenv insta
  • 如何使用 Amazon Marketplace Web Service (Amazon MWS) API 更新产品价格

    只是试图找出更新亚马逊市场商店的产品价格有多容易 或者可能有多困难 经过一番搜索后 我找到了有关的文档 亚马逊商城网络服务 亚马逊MWS https developer amazonservices com gp mws docs html
  • TcpClient 开始连接超时

    如何在 C 中为 BeginConnect 异步调用设置自定义超时 它非常有用 当连接到主 机时有可能不侦听给定端口 每个这样的调用在释放线程之前都会浪费大约 15 秒的时间 我有以下代码 正如许多 stackoverflow 答案中所建议
  • 访问自定义元素的子节点?

    这可能有点令人困惑 我正在尝试从我的自定义元素访问innerHTML 或childNodes 是否可以从Web组件导入文件访问原始DOM结构 在 AttachShadow 之前 在下面的示例中 我尝试从 jookah gallery 导入文
  • 如何在不使用_setmode的情况下在C++中输出unicode

    我正在尝试将 unicode 值 在本例中为 u250F 或 插入到控制台输出 我四处搜寻 人们推荐了各种各样的东西 在我们讨论我的尝试之前 我使用的是 Windows 和 Visual Studio 2013 主要错误 当我尝试多个 修复
  • 常量字符串数组[重复]

    这个问题在这里已经有答案了 可能的重复 声明一个常量数组 https stackoverflow com questions 5142349 declare a const array 我需要类中的常量字符串数组 就像是 public cl
  • PHP版本升级导致类构造函数出现问题

    我刚刚升级了我的 PHP 版本v5 3 1 to v5 3 9 突然 类构造函数开始不起作用 有任何想法吗 您可能正在使用带有类名的构造函数而不是 construct 关键词 请参阅此处 v5 3 3 中的行为更改 http www php
  • 从字符串中查找单词的下一个单词

    我编写了以下代码来从 Java 字符串中获取下一个单词 我觉得它非常原始 我不应该为此编写这么多代码 但找不到任何其他方法 想知道是否有更好的方法可以做到这一点 public static String getNextWord String