static void CompressWhitespace(nsACString &str) { const char *p; int32_t i, len = (int32_t) NS_CStringGetData(str, &p); // trim leading whitespace for (i=0; i<len; ++i) { if (!strchr(kWhitespace, (char) p[i])) break; } if (i>0) { NS_CStringCutData(str, 0, i); len = (int32_t) NS_CStringGetData(str, &p); } // trim trailing whitespace for (i=len-1; i>=0; --i) { if (!strchr(kWhitespace, (char) p[i])) break; } if (++i < len) NS_CStringCutData(str, i, len - i); }
void nsACString::Trim(const char* aSet, bool aLeading, bool aTrailing) { NS_ASSERTION(aLeading || aTrailing, "Ineffective Trim"); const char* start; const char* end; uint32_t cutLen; if (aLeading) { BeginReading(&start, &end); for (cutLen = 0; start < end; ++start, ++cutLen) { const char* test; for (test = aSet; *test; ++test) { if (*test == *start) { break; } } if (!*test) { break; } } if (cutLen) { NS_CStringCutData(*this, 0, cutLen); } } if (aTrailing) { uint32_t len = BeginReading(&start, &end); --end; for (cutLen = 0; end >= start; --end, ++cutLen) { const char* test; for (test = aSet; *test; ++test) { if (*test == *end) { break; } } if (!*test) { break; } } if (cutLen) { NS_CStringCutData(*this, len - cutLen, cutLen); } } }