【问题标题】:How to split a string using "-" keyword ?如何使用“-”关键字拆分字符串?
【发布时间】:2016-04-14 07:11:13
【问题描述】:

这是我的字符串,我喜欢用特殊字符“-”来分割它

hi - नमस्ते
Hindi - हिन्दी
Telugu - तेलुगु
how - कैसे
are - हैं
you - आप
go - जाना
going - जा रहा
translate - अनुवाद करना
good - अच्छा

我尝试了什么:

[strFileContent enumerateSubstringsInRange:NSMakeRange(0, strFileContent.length)
                                               options:NSStringEnumerationByWords
                                            usingBlock:
             ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                 checking=substring;
                 NSLog(@"this is my splitting values =%@",substring);

             }];

如果我执行上述方法,每个单词都会分开,以便继续单词刹车,例如翻译 - अनुवाद करना 这个词刹车。

2)[arrcheck addObject:[strFileContent componentsSeparatedByString:@"-"]];

如果我做了 2 种方法,那么 \n 会被添加

"Tamil ",
        " \U0924\U093e\U092e\U093f\U0932
\nhi ",
        " \U0928\U092e\U0938\U094d\U0924\U0947
\nHindi ",
        " \U0939\U093f\U0928\U094d\U0926\U0940
\nTelugu ",
        " \U0924\U0947\U0932\U0941\U0917\U0941
\nhow ",
        " \U0915\U0948\U0938\U0947
\nare ",
        " \U0939\U0948\U0902
\nyou ",
        " \U0906\U092a
\ngo ",
        " \U091c\U093e\U0928\U093e
\ngoing ",
        " \U091c\U093e \U0930\U0939\U093e
\ntranslate ",
        " \U0905\U0928\U0941\U0935\U093e\U0926 \U0915\U0930\U0928\U093e

分别获取值的确切方法是什么。

【问题讨论】:

  • 你检查过 componentsSeparatedByString 方法的字符串吗???
  • 你的字符串最初包含什么?
  • @ suhaspatil我的sring包含这个值hi - नमस्तेhindi - हिन्दीtelugu - तेलुगु如何 - कैसे是 - हैं你 - आपgo - आपजानाजानाजानारहा翻译 - अनुवादअच्छाकरना >
  • 好的,你想把英语和印地语分开吗?
  • 感谢@SuhasPatil :)

标签: ios objective-c nsstring


【解决方案1】:
// ORIGINAL STRING:    NSString *hindi = @"hi - नमस्ते Hindi - हिन्दी Telugu - तेलुगु how - कैसे are - हैं you - आप go - जाना going - जा रहा translate - अनुवाद करना good - अच्छा"; 

-

NSString *hindi = @"hi - नमस्ते Hindi - हिन्दी Telugu - तेलुगु how - कैसे are - हैं you - आप go - जाना going - जारहा translate - अनुवादकरना good - अच्छा";


hindi = [hindi stringByReplacingOccurrencesOfString:@"- " withString:@""];

NSArray *mixArray = [hindi componentsSeparatedByString:@" "];
NSLog(@"mixArray: %@",mixArray);


NSMutableArray *arrayForEnglishWords = [[NSMutableArray alloc]init];

for (int i =0 ; i < mixArray.count; i++) {

    if(i%2 == 0){

        [arrayForEnglishWords addObject:mixArray[i]];
    }
}


for (NSString *str in arrayForEnglishWords) {

        NSLog(@": %@",str);

}

NSLog(@"__________________");

NSMutableArray *arrayForHindiWords = [[NSMutableArray alloc]init];

for (int i =0 ; i < mixArray.count; i++) {

    if(i%2 != 0){

        [arrayForHindiWords addObject:mixArray[i]];
    }
}

for (NSString *str in arrayForHindiWords) {

    NSLog(@": %@",str);

}

输出:

-

我删除了印地语单词之间的空格,因为那是 扰乱逻辑,无论如何,如果你能把不同的 单词之间的分隔符
例如:如果您使用“,”作为分隔符,那么您 将字符串将变为 as
NSString *hindi = @"hi - नमस्ते,印地语 - हिन्दी,泰卢固语 - तेलुगु,how - कैसे,are - हैं,you - आप,go - जाना,going- जा रहा,翻译 - अनुवाद करना,good - अच्छा”;

然后将上面代码中的逻辑替换为:

印地语 = [印地语 stringByReplacingOccurrencesOfString:@"- " withString:@","];

NSArray *mixArray = [印地语 componentsSeparatedByString:@","];

【讨论】:

  • 我认为你也可以使用“\n”作为分隔符,因为你有那个,检查一下!
【解决方案2】:

我对你的字符串的尝试只是检查

NSString *hindi = @"hi - नमस्ते Hindi - हिन्दी Telugu - तेलुगु how - कैसे are - हैं you - आप go - जाना going - जा रहाtranslate - अनुवाद करना good - अच्छा";

NSArray *separr = [hindi componentsSeparatedByString:@"-"];

用你的字符串试试这个。

如果你得到 \n 然后通过检查 NSCharacterSet 从数组中删除它

【讨论】:

  • 你可以使用 NSCharacterSet 换行符删除 \n 字符 \
【解决方案3】:

看起来您的输入在每次翻译后都包含换行符。

尝试使用 :

将它们分开
NSArray* components = [str componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSMutableArray *finalComponents = [[NSMutableArray alloc] init];

for (NSString* strToken in components) {
    [finalComponents addObject:[strToken componentsSeparatedByString:@" - "]];
}

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2020-03-03
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多