java - IndexOf 不同的结果,带空格的输入
问题描述
在两个分隔符之间获取所有字符串时,我遇到了一个小问题。正如我在其他相关问题上看到的那样,在两个分隔符之间获取字符的(一种)方法如下:给定一些字符串,在我的示例中"void foo(int a, int b) {"
,我想获取括号之间的每个字符。使用:
String parameters = currLine.trim().substring(currLine.indexOf("("),
currLine.indexOf(")")-1);
currLine
当然是哪里"void foo(int a, int b) {"
。现在一切正常,因为我得到了"int a, int b"
字符串。问题是使用如下字符串:
void foo ( int a , String b ) {
我明白了:参数="nt a , String b ) "
而且我不知道如何解决这个问题而不会给第一种情况造成问题。
解决方案
问题是trim
不修改原来的String
。因此,当您计算 时,substring
您会获得不同的结果,具体取决于输入是否String
在开头或结尾有空格,因为indexOf
是在原始String
.
一种可能的解决方案如下:
// Trim the value
String trimmed = currLine.trim();
// And operate with it
String parameters = trimmed.substring(trimmed.indexOf("("),
trimmed.indexOf(")")-1);
一种可能的更好方法是在提供的值上计算正则表达式以提取括号之间的信息,例如:
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(currLine);
if (m.find()) {
String parameters = m.group(1);
// Operate with parameters
}
推荐阅读
- mqtt - 如何从设备端获取 LEC(Last Event Cache)事件?
- android - 如何在 Flutter 中的文本之间加载图像
- php - 调整 Navbar PHP 文件中子目录的链接路径
- bar-chart - Qlik 条形图中使用的动态维度未在选择任何条形时过滤数据
- r - 为 R 中的嵌套 for 循环情况寻找 apply、tidyr 或 dplyr 解决方案
- java - 在 hadoop 生态系统中存储完整 DNA 序列的最佳方法
- android - 如何在 Kotlin 中绘制可绘制对象?
- multithreading - 多线程读取同一个文件的效率
- excel - 有没有办法将 Power BI 表导出到 excel 中?
- python - Numpy 数组到数据框如果使用所有标量值,则必须传递一个索引