यदि उपयोगकर्ता दूसरी जगह बनाने की कोशिश कर रहा है तो मैं टेक्स्टरेरा के इनपुट मान को अपडेट नहीं करना चाहता हूं।

अभी के लिए मैं टेक्स्ट की स्थिति को अपडेट करने के लिए ऑन चेंज का उपयोग कर रहा हूं

onChange = {(e) => setText(e.target.value)}

मैंने कीकोड की जांच करने की कोशिश की है और अगर अंतरिक्ष का उपयोग किया जाता है तो अपडेट नहीं किया जाता है, लेकिन समस्या यह है कि मुझे एक स्थान चाहिए, दूसरा स्थान वह है जो इनपुट मान को अपडेट नहीं करना चाहिए। मैं उसे कैसे प्राप्त कर सकता हूं ?

संपादित करें: मैं लोगों को जितनी चाहें उतनी जगहों का उपयोग करने की अनुमति नहीं देना चाहता, जब तक कि यह एक के बाद एक न हो (कोई दोहरी जगह नहीं)

1
Samuel 22 अक्टूबर 2020, 23:15

1 उत्तर

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

आप केवल एक फ़ंक्शन बनाना चाहते हैं (यह एक इनलाइन अनाम फ़ंक्शन हो सकता है, या पठनीयता के लिए एक विस्तारित एक हो सकता है) जो हर बार कई रिक्त स्थान को फ़िल्टर करता है और टेक्स्ट को उस फ़ंक्शन की वापसी पर सेट करता है।

onChange = {(e) => setText(e.target.value.split('').filter((val1, index, arr) => ind == 0 || val1 !== ' ' || arr[ind-1] !== ' ').join('')}
const oneSpace = (val1, ind, arr) => {
  if (ind == 0) return true;
  if (val1 !== ' ') return true;
  const val2 = arr[ind-1];
  if (val2 !== ' ') return true;
  return false;
}

const str1 = "This is a string";

console.log(str1.split('').filter(oneSpace).join(''));

const str2 = "This  is  a  string  with  double  spaces";

console.log(str2.split('').filter(oneSpace).join(''));

const str3 = "This   is   a   string   with   triple   spaces";

console.log(str3.split('').filter(oneSpace).join(''));

const str4 = "This is      a           string        with                random       spaces";

console.log(str4.split('').filter(oneSpace).join(''));
1
Samathingamajig 22 अक्टूबर 2020, 20:40