从NSString中删除“@”和“:”之间的文本,同时保留文本后面的文本

时间:2017-03-31 22:04:50

标签: objective-c regex string nsstring

因此,我正在阅读来自twitter机器人的最新推文并将其分配给字符串,但有时它会直接向用户发送推文。这是一个可能是什么样子的例子。

public class Main {

    public static void main(String[] args) {

        T t1 = new T(), t2 = new T();

        t1.run();
        t2.run();
    }
}

class Test {

    private int x;

    void foo() {

        synchronized (this){
            System.out.println("Entered");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Exit");
        }
    }
}

class T extends Thread {

    static Test t = new Test();

    public void run() {

        System.out.println("Thread started");
        t.foo();
    }

}

我希望始终删除与用户对话的第一部分,同时将消息保留在最后。有太多不同的消息要使用“stringByReplacingOccurrencesOfString”

我不想使用来自twitter API的“exlude-replies”,因为这个机器人非常受欢迎,因为“计数”适用之前需要提取100个

任何想法我怎么能这样做?我认为它与正则表达式有关,但我以前从未使用它们或者能够按照我想要的方式工作。我非常感谢任何对正则表达式感到满意的人的帮助

编辑:如果正则表达式不适用于这种情况,id接受限制的解释,防止:)

2 个答案:

答案 0 :(得分:1)

我能想到的最简单的解决方案是使用NSString函数componentsSeparatedBy:@":"创建一个NSMutable数组,然后只删除第一个元素。

NSMutableArray *tweetArray = [[NSMutableArray alloc] initWithArray: [tweet componentsSeparatedByString:@":"]];
[tweetArray removeObjectAtIndex:0];

您之后随机出现的冒号问题可以通过将这些碎片重新连接在一起来解决。

tweet = [tweetArray componentsJoinedByString:@":"];

修改:修复用户' maddy'

指出的错误

您必须将此代码粘贴在if语句中,以便它不会在通常具有冒号的推文中执行。您可以使用始终以@user开头的事实。

if ([tweet characterAtIndex:0] == '@' && [tweet characterAtIndex:1] != ' '){
    NSMutableArray *tweetArray = [[NSMutableArray alloc] initWithArray: [tweet componentsSeparatedByString:@":"]];
    [tweetArray removeObjectAtIndex:0];

    tweet = [tweetArray componentsJoinedByString:@":"];
}

答案 1 :(得分:0)

你也可以使用它。

$scope.myData.val