प्रोग्राम के निर्माण स्ट्रिंग और अनुगामी के साथ काम कर या बूलियन ऑपरेटरों अग्रणी

वोट
1

मैं एक आवेदन पत्र में Lucene उपयोग कर रहा हूँ। इस तरह के रूप में मैं एक फार्म उपयोगकर्ताओं का चयन वे ड्रॉपडाउन से खोजना चाहते हैं द्वारा एक प्रश्न का निर्माण करने देता है। एक बार एक उपयोगकर्ता द्वारा सबमिट, मैं क्वेरी का निर्माण और यह कुछ इस तरह करने के लिए नीचे आता है:

var formedQuery= string.Empty;
foreach(var field in fields)
{
    if (field.name != 'condition so you never know which field from fields will be 1st')
        formedQuery +=  AND + field.name + : field.value;
}

अब इस के साथ समस्या यह है कि बयान 'और' के साथ शुरू हो जाएगा है

अब मैं आमतौर पर के साथ समाप्त:

formedQuery = formedQuery.Substring(4) //Trim the first 4 characters

साथी प्रोग्रामर आमतौर पर ऐसा करने के लिए पसंद करेंगे:

var formedQuery= string.Empty;
var i = false;
foreach(var field in fields)
{
    if (false && 
        field.name != 'condition so you never know which field from fields will be 1st')
    {
        formedQuery +=  AND + field.name + : field.value;
        i = true;
    }
    else
        formedQuery +=   + field.name + : field.value;
}

वहाँ एक और तकनीक लोगों बात मैं के बारे में सोच नहीं कर रहा हूँ की इस तरह के लिए उपयोग करना चाहते है? मैं पूर्व पसंद करते हैं।

30/07/2009 को 00:40
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
0

मैं हमेशा पूर्व इस्तेमाल किया है। ज्यादातर क्योंकि यह मेरे लिए क्लीनर लग रहा है।


एक और दृष्टिकोण:

query = first_field_name

for every other field besides first:
    query = " AND " + field_name
30/07/2009 को 00:49
का स्रोत उपयोगकर्ता

वोट
1

वहाँ दो अन्य समाधान मैं का उपयोग करें, भाषा पर एक छोटे से निर्भर करता है। पहली बार अपने एक दूसरे के समान है, लेकिन सिर्फ बदलता है "पहले क्षेत्र" चेक।

var formedQuery = string.Empty;
var and = string.Empty;
foreach(var field in fields)
{
    if (field.name != 'condition so you never know which field from fields will be 1st')
    {
        formedQuery += and + field.name + ":" field.value;
        and = " AND";
    }
}

लेकिन समाधान मैं आमतौर पर उपयोग करने के लिए एक आदेश दिया सूची शामिल है। मान लिया जाये कि मैं किसी भी तरह कि समझदार लग रहा है में अपने उदाहरण कोड का विस्तार कर सकते हैं:

var formedQuery = list.Empty;
foreach(var field in fields)
{
    if (field.name != 'condition so you never know which field from fields will be 1st')
    {
        formedQuery.push(field.name + ":" field.value);
    }
}
formedQuery = formedQuery.join(" AND ");

यह भी रूप में अनावश्यक स्ट्रिंग प्रतियां के बहुत सारे नहीं कर का लाभ दिया है अपने स्ट्रिंग (कुछ भाषाओं में, इस महंगा है) को इकट्ठा।

30/07/2009 को 00:51
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more