首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Trim() vs IndexOf()

Trim() vs IndexOf()
EN

Stack Overflow用户
提问于 2017-01-04 06:28:18
回答 3查看 389关注 0票数 0

我正在解析100个文件,其中包含1000行。

我必须检查行是否以某些关键字开头。

我有两个选择,不确定该考虑哪一个。

选项1:

代码语言:javascript
运行
AI代码解释
复制
    String[] keywordsArr = { "Everything", "Think", "Result", "What", "#Shop",  "#Cure" };
    for (int i = 0; i < linesOfCode.length; i++) {

        for (String keyWord : keywordsEndingAtEndOfLogicalLine) {

            if (linesOfCode[i].indexOf(keyWord) > -1) {

                if (linesOfCode[i].trim().startsWith(keyWord)) {

                    linesOfCode[i] = "";
                    break;
                }
            }
        }
    }

选项2:

代码语言:javascript
运行
AI代码解释
复制
String[] keywordsArr = { "Everything", "Think", "Result", "What", "#Shop",  "#Cure" };
    for (int i = 0; i < linesOfCode.length; i++) {

        for (String keyWord : keywordsArr) {

            if (linesOfCode[i].trim().startsWith(keyWord)) {

                    linesOfCode[i] = "";
                    break;
            }
        }
    }

以关键字开头的行频为1/ 100。

EN

回答 3

Stack Overflow用户

发布于 2017-01-04 15:17:41

扫描整个字符串以查找关键字没有什么意义,只是为了避免查找字符串开头的关键字。如果这个想法是为了避免昂贵的trim,那么使用一种更便宜的技术来查找队列中的第一个令牌可能是合理的。

请注意,如果行以其前缀为关键字的单词开头,则startsWith比较可能会产生误报。例如,如果关键字是break,则代码行如下:

代码语言:javascript
运行
AI代码解释
复制
breakfast = "ham and eggs";

会被错误地消除。

您可能希望研究一下如何使用StringTokenizer提取字符串中的第一个单词,或者使用正则表达式更好。

票数 0
EN

Stack Overflow用户

发布于 2017-01-09 08:34:45

这是正则表达式非常有用的地方。您的代码等同于

代码语言:javascript
运行
AI代码解释
复制
for (int i = 0; i < linesOfCode.length; ++i) {
    linesOfCode[i] = linesOfCode.replaceAll(
        "^\\s+(Everything|Think|Result|what|#Shop,#Cure).*", "");
}

但您可能需要在关键字后加上单词边界(\\b)。为了获得更快的速度,您应该像这样编译您的正则表达式

代码语言:javascript
运行
AI代码解释
复制
private static final Pattern PATTERN = Pattern.compile(
    ^\\s+(Everything|Think|Result|what|#Shop,#Cure)\\b");

for (int i = 0; i < linesOfCode.length; ++i) {
    if (Pattern.matcher(linesOfCode[i]).matches()) {
        linesOfCode[i] = "";
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-01-04 07:40:08

尝试使用continue而不是break。continue不会停止循环,而是会告诉程序上一级,从而继续循环下一项。

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

https://stackoverflow.com/questions/41457529

复制
相关文章
jq判断当前元素是第几个元素并修改其他元素
$(this).addClass("active").siblings().removeClass("active");
93年的老男孩
2019/12/18
9850
jQuery判断当前元素是第几个元素&获取第N个元素
如果我们点击任何一个li标签,想知道当前点击的是第几个li标签,可以使用下面的代码:
仙士可
2019/12/19
3.3K0
原生JS如何获取当前元素属于父元素第几个子元素
原生JS有一个常见的小技巧那就是通过元素的previousSibling 属性,额外需要注意的是该属性会遍历text节点,即回车键。
IT工作者
2022/01/26
10.5K0
jquery获取第几个子元素_js获取元素的指定子元素
通过children方法,children(“input:first-child”)
全栈程序员站长
2022/08/03
27.5K0
PowerBI Desktop 插入元素的几个用法
上图为CODIV-2019 美国示例 图中的文本框部分引起了我的注意 文本有标题且加粗,带有链接; 文本中存在日期变量; 图片带有跳转链接; 如何实现呢? 文本框插入标题和超链接 打开视图面板,插入文本框元素,输入了文本内容,现在想添加一个标题 将标题内容写入文本可以实现,但是这种方法太傻了 选中文本框仔细观察,会发现标题选项,打开设置即可(英文标题才会自动加粗) 选中试图添加超链接的文本内容,下方出现黑框,超链接设置就藏在最后的按钮处 点击添加超链接 URL 即可 按钮使用度量值 使用度量值可以在文本框内
披头
2020/05/13
2K0
迭代器模式(控制访问集合中的元素)
现在我们需要思索,JDK是怎么做到这一切的?现在让我们先利用迭代器实现一个数组类型Array,这个类型需要支持添加、移除、遍历操作。
幺鹿
2018/08/21
1.4K0
迭代器模式(控制访问集合中的元素)
jquery获取第几个元素的方法总结
使用jquery时经常会遇到,选择器选择一组元素后,需要在这组元素中找到第几个元素。
江一铭
2022/06/17
1.1K0
从任意长度的可迭代对象中分解元素
试想,如果一个可迭代对象有N多个元素,要将这些元素逐一分解,会得到一大堆零散的变量。而我们的需求并不需要这么多。此时,python的*表达式就派上用场了 分解列表 假设以下是黄老邪,黄蓉,柯镇恶,沙通天,丘处机,郭靖,杨康,欧阳克的战斗力。除去第一名和最后一名,求其他人的平均战斗力是多少? fight_num = [95, 70, 62, 50, 75, 85, 75, 80] # 对数据进行排序 first, *middle, last = sorted(fight_num, reverse=True)
章鱼喵
2018/06/27
6710
C++11新特性:迭代数组中的元素
之前在写c++的时候,我们想要依次迭代数组之中的元素,只能是用for循环来实现。当我学到python的时候,感受到了直接迭代元素的便捷性,真的是高呼Python真香哈哈哈哈。现在发现,原来C++11里也添加了这样一个新的功能,真的很棒!
灯珑LoGin
2022/10/31
8110
Java Map中常遇到的几个问题 2.迭代Map
1.将Map转化成List Map接口提供了三种collection:key set,value set 和 key-value set,每一种都可以转成List。如下: 2.迭代Map
美的让人心动
2018/06/14
7300
判断数组内是否有几个元素之和等于m
1 #include<iostream> 2 using namespace std; 3 int a[10001]; 4 int f(int n,int m) 5 { 6 if(m==0||m-a[n]==0)return 1; 7 if(n==1&&m-a[n]!=0)return 0; 8 else return f(n-1,m)+f(n-1,m-a[n]); 9 } 10 int main() 11 { 12 int n,m; 13 cin>
attack
2018/04/12
1.3K0
Java中List迭代过程中删除、新增元素的处理
java.util.ConcurrentModificationException
用户7886150
2020/12/13
1.1K0
js 判断数组是否包含某个元素方法集合的原因_怎么判断数组有几个元素
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
6.5K0
Python GUI
Flexx 是一个纯Python工具包,用来创建图形化界面应用程序。其使用 Web 技术进行界面的渲染。你可以用Flexx来创建桌面应用,同时也可以导出一个应用到独立的 HTML 文档。因为使用纯Python开发,所以Flexx是跨平台的。只需要有Python和浏览器就可以运行。如果是使用桌面模式运行,推荐使用Firefox 。
hbbliyong
2018/10/09
1.3K0
Python:GUI
# code: utf-8 # writer: Geovin Du 涂聚 文 import os; import sys; from tkinter import *; #GUI 自带的 另有:wxPython,PyQt5,PythonCard,Dabo等 from tkinter.messagebox import showinfo; def reply(name): showinfo(title='GUI测试', message='你好! %s!' % name); # 应用
py3study
2020/01/15
9330
迭代
如果给定一个list或tuple,可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration) 在Python中,迭代是通过for ... in来完成的 Python的for循环抽象程度要高于C的for循环,因为Python的for循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上 当使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,而无需太关心该对象究竟是list还是其他数据类型 任何可迭代对象都可以作用于for循环,包括自定义的数据类型,只要符合迭代条件,就可以使用for循环
py3study
2020/01/15
6540
python迭代、可迭代对象、迭代器及生
通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。
py3study
2020/01/21
1.4K0
[javaSE] GUI(菜单)
调用Frame对象的setMenuBar()方法,设置菜单,参数:MenuBar对象
唯一Chat
2019/09/10
9480
[javaSE] GUI(菜单)
GUI编程
 AWT(Abstract Window Toolkit)包含了很多类和接口,用于Java Application的GUI(Graphics User Interface图形用户界面)编程。使用AWT所涉及的类一般在java.awt包及其子包中。Container和Component是AWT中的两个核心包
mathor
2018/07/24
9790
GUI编程
迭代(iterable)和迭代器
简介: 迭代(iterable) #任何可迭代对象都可以作用于for循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for循环 d = {'a': 1, 'b': 2, 'c': 3} #对dict迭代 for k,v in d.
狼啸风云
2020/07/06
9070

相似问题

对象构造函数的prototype属性

12

如何使用Object.prototype向对象构造函数添加函数?

15

构造函数和对象之间的区别

42

使用prototype扩展对象和使用内联扩展对象有什么区别?

32

使用CSS和Prototype获取innerHTML和元素本身?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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