java - 如何忽略除第一次和最后一次出现之外的所有字符来执行子字符串?
问题描述
我尝试提取特定内容。该内容是findTestObject
函数的参数。所以我建立了这个方法:
Java 代码
String testObjectExtracted = line.substring(line.indexOf("(") + 1, line.indexOf(")") + 1);
String testObjectPathExtracted = StringUtils.substringBetween(testObjectExtracted, "findTestObject(", ")");
testObjectPathExtracted = testObjectPathExtracted.substring(1, testObjectPathExtracted.length() - 1);
System.out.println(line);
System.out.println(testObjectExtracted);
System.out.println(testObjectPathExtracted);
示例确定
WebUI.click(findTestObject('Menu/span_Menu'))
findTestObject('Menu/span_Menu')
Menu/span_Menu
示例 KO
WebUI.click(findTestObject('Menu/Test/link (AA)'))
findTestObject('Menu/Test/link (AA)
Menu/Test/link (A
// Expected result : Menu/Test/link (AA)
但是,正如您在上面的示例中看到的那样,如果路径中有(
or ,我将面临问题)
,因为我的子字符串基于(
and )
。
请问您有什么解决办法吗?谢谢你。
解决方案
解决方法是使用lastIndexOf()
方法。
String testObjectExtracted = line.substring(line.indexOf("(") + 1, line.lastIndexOf(")"));
String testObjectPathExtracted = testObjectExtracted.substring(testObjectExtracted.indexOf("(") + 1, testObjectExtracted.lastIndexOf(")"));
testObjectPathExtracted = testObjectPathExtracted.substring(1, testObjectPathExtracted.length() - 1);
推荐阅读
- mysql - 在一列中计算 2 个值
- nativescript - 如何使用 removechild() 删除 xml 元素?
- jquery - 下拉菜单不适用于 Bootstrap 版本 3.4.1 和 Jquery >= 3.0.0
- html - Eclipse - HTML 验证设置存储在哪里?
- vue.js - 如何确保 vuetify 组合框中的选定项目是其项目选项的一部分?
- docker - 如何在 Docker 中使用浏览器启动 localhost 或条目 - Magento 2
- java - 根据提供的 id 打印一篇文章
- php - call_user_func_array 和 __call 创建无限循环
- html - 社交媒体按钮定位
- algorithm - 向文本添加标记标签的最佳算法