2011-02-18 59 views
16

我有以下字符串:從字符串中提取的第一個字 - 正則表達式


str1 = "cat-one,cat2,cat-3"; 
OR 
str1 = "catone,cat-2,cat3"; 
OR 
str1 = "catone"; 
OR 
str1 = "cat-one"; 

這裏的要點是的話可能/可能不會有「 - 」,它出現

使用正則表達式: 如何我能提取第一個單詞嗎?

欣賞這方面的任何幫助。

感謝, 大號

+0

這所有字符匹配上升到第逗號:^ [^,] + – 2011-02-18 12:52:20

+0

這是我試過(和工作!),並希望這是正確的: 警報(str.replace(/^([^,]+)(.*)?/,「$ 1 「)); – lshettyl 2011-02-18 13:23:39

+0

如果真的所有你想做的事情,這將很好的工作:(。*)?在您的正則表達式警報(str.substring(0,str.indexOf( ''))) – 2011-02-18 14:11:08

回答

35

它很容易,只是包括括號中允許的字符:

^([\w\-]+)

1

不使用正則表達式的方法:假設第一個字是用逗號總是分隔「 」你可以這樣做:

var str1 = "cat-one"; 
var i = str1.indexOf(","); 
var firstTerm = i == -1 ? str1 : str1.substring(0, i); 

編輯:假設的日是一個JavaScript問題,出於某種原因。

0

如果有人,有一天想做到在斯威夫特在這裏你有延期手續:

extension String { 

    func firstWord() -> String? { 
     var error : NSError? 
     let internalExpression = NSRegularExpression(pattern: "^[a-zA-Z0-9]*", options: .CaseInsensitive, error: &error)! 
     let matches = internalExpression.matchesInString(self, options: nil, range:NSMakeRange(0, countElements(self))) 
     if (matches.count > 0) { 
      let range = (matches[0] as NSTextCheckingResult).range 
      return (self as NSString).substringWithRange(range) 
     } 
     return nil 
    } 
} 

要使用它只是寫:

myString.firstWord() 
相關問題