मैं यह जांचने का एक तरीका खोजने की कोशिश कर रहा हूं कि इनपुट स्ट्रिंग अद्वितीय संख्या है या नहीं। उदाहरण के लिए:

1,2,45,4,5 => true
11,13,14,15 => true
12,123,12,15 => false
3,5,67,3,5,3 => false

मुझे परीक्षण करने के लिए कोड (\d+)(,|\d| )*(\1) सीखना और लिखना था, लेकिन यह एक ही अंक के अंकों में विफल रहा, इस मामले में:

23,13,14 
1,11,15
0
taki 2 पद 2015, 05:49

3 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि आपको जांचना चाहिए कि संख्याएं कहां समाप्त होती हैं (कोमा)

Regex r = new Regex(@"(^|,)(\d+),(.*,)?\2($|,)");

संपादित करें

मैंने रेगेक्स का थोड़ा और गूढ़ संस्करण बनाया। यह अग्रणी शून्य और रिक्त स्थान को संभालता है।

Regex r = new Regex(@"(^|[,\s])0*(\d+)[,\s](.*[,\s])?0*\2($|[,\s])");
string[] samples = new string[]{
    "1,2,45,4,5",
    "11,13,14,15",
    "12,123,12,15",
    "3,5,67,3,5,3",
    "23,13,14",
    "1,11,15",
    "3,003",
    "1,3,4,3"
};

foreach (string sample in samples)
{
    Console.WriteLine(sample + " => " + (r.IsMatch(sample) ? "duplicit" : "unique"));
}

उत्पादन

1,2,45,4,5 => unique
11,13,14,15 => unique
12,123,12,15 => duplicit
3,5,67,3,5,3 => duplicit
23,13,14 => unique
1,11,15 => unique
3,003 => duplicit
1,3,4,3 => duplicit
0
Antonín Lejsek 2 पद 2015, 04:15

डुप्लिकेट का पता लगाने का एक तरीका, यह मानते हुए कि आप गैर-रेगेक्स समाधानों के लिए खुले हैं, कॉमा पर विभाजित करना है, संख्या से समूह, और देखें कि क्या कोई संख्या दोहराई जाती है।

var input = "12,123,12,15";

var isUnique = input.Split(',')
                    .GroupBy(x => x)
                    .All(x => x.Count() == 1);  // returns false in this case
4
Grant Winney 2 पद 2015, 03:03

कुछ इस तरह? (कोई रेगेक्स)

public static bool func(string s){
    try {
        return s.Split(',')
        .Select(x=>Int32.Parse(x))
        .GroupBy(x=>x)
        .All(x=>x.Count() == 1)
    }catch (FormatException e){
        //oh noes the string was not formatted nicely :(
        return false; // do something appropriate for your application
    }
}
1
moreON 2 पद 2015, 03:05