0

我觉得这太罗嗦了,但我会尽力而为。我的应用程序内置了每天都在变化的报价。其中一些超过 140 个字符,但我希望能够通过 Twitter 分享,所以我需要一种方法来获取计数,如果超过 140,请编辑它。到目前为止,我所拥有的是:

int maxChars = 140;
        int charsLeft = maxChars - [label1.text length];

        NSString *removed = [label1.text substringToIndex:[label1.text length] -  charsLeft];


        TWTweetComposeViewController* twc = [[TWTweetComposeViewController alloc] init];
        [twc setInitialText:removed];
        [self presentModalViewController:twc animated:YES];

其中 label1 是显示报价的 UILabel。这会在超过 140 个字符的引号上引发错误

[__NSCFString substringToIndex:]: Range or index out of bounds'

有什么想法吗?我在想的另一件事。每个报价都以

" - Person who said it

我在想我可以得到字符数,删除多余的字符 + 3 并在 - 之前插入一个 ...。我怎么能这样做,或者至少修复我现有的代码?

4

1 回答 1

1

好吧,想象一下您的代码带有一个包含 10 个字符的标签。

 int maxChars = 140;

 int charsLeft = maxChars - [label1.text length];

 NSString *removed = [label1.text substringToIndex:[label1.text length] -  charsLeft];

变成

 int charsLeft = 140 - 10; //charsLeft = 130

 NSString *removed = [label1.text substringToIndex:10 -  130];

这将告诉 SubstringToIndex 获取从 0 到 -120 的字符,这没有多大意义。

拆分字符串以隔离引用的作者可能会很棘手,因为引号和作者姓名都可能包含连字符。如果你想尝试一下,你可以做一些类似这个spring-parsing question建议的答案之一(http://stackoverflow.com/questions/2166809/number-of-occurrences-of-a-substring-in -an-nsstring) 用于字符串 @" - ",并尝试隔离最后一个实例。

于 2012-08-03T20:07:14.467 回答