উটকেসেক্সটেক্সটকে বাক্য কেস পাঠ্যে রূপান্তর করুন


144

আমি কীভাবে জাভাস্ক্রিপ্টে 'হ্যালোথের' বা 'হ্যালোথের' এর মতো 'হ্যালো সেখানে' রূপান্তর করতে পারি?


9
হুম .. iLiveInTheUSA এর জন্য আপনার প্রত্যাশিত আউটপুটটি কী?
উইম

8
আমি ইউ তে থাকি ... ওহ কর্কশ! - তবে আমার ক্ষেত্রে, আমার কাছে স্ট্রিংগুলির একটি সীমিত সেট রয়েছে এবং এমন কোনও স্ট্রিং নেই যা সাধারণ রূপান্তরকারীকে ভেঙে ফেলতে পারে। ভাল ধরা যদিও!
হায়দারA

অনুরূপভাবে ইউএসবিপোর্টের "ইউএসবি পোর্ট"
19:31 এ সাইনস্রিতর

2
@ উইম: আইলাইভইনস ইউউসাকে সঠিক উটের ক্ষেত্রে স্বরলিপি হিসাবে আইলিভআইএনইউএসএ হওয়া উচিত, তবে এটি বিভিন্ন সমস্যা উপস্থাপন করবে।
কনরাড হাফনার

উত্তর:


187
var text = 'helloThereMister';
var result = text.replace( /([A-Z])/g, " $1" );
var finalResult = result.charAt(0).toUpperCase() + result.slice(1);
console.log(finalResult);

প্রথম অক্ষরকে মূলধন করুন - উদাহরণ হিসাবে।

স্থানটি নোট করুন " $1"

সম্পাদনা: প্রথম চিঠির মূলধনের উদাহরণ যুক্ত হয়েছে। অবশ্যই, প্রথম অক্ষরটি ইতিমধ্যে মূলধনের ক্ষেত্রে - আপনার অপসারণের জন্য অতিরিক্ত জায়গা থাকবে।


1
আমি ফাঁকা জায়গাগুলির ব্যবহার খনন text.replaceকরেছি, আমি
পড়ার

8
ইউএসবিপোর্টস => ইউএসবি পোর্টগুলি, আমি যা প্রত্যাশা করি তা নয়, আমি একটি ইউএসবি পোর্ট চাই
সাইনস্রিতর

লেখার মতো কি Non-GoogleChrome?
টিম

107

বিকল্পভাবে লোডাশ ব্যবহার :

lodash.startCase(str);

উদাহরণ:

_.startCase('helloThere');
// ➜ 'Hello There'

লড্যাশ হ'ল একটি লাইব্রেরি যা অনেকগুলি প্রতিদিনের জেএস কার্যগুলিকে শর্টকাট দেয় here এখানে অন্যান্য অনেকগুলি অনুরূপ স্ট্রিং ম্যানিপুলেশন ফাংশন রয়েছে camelCase, kebabCaseইত্যাদি etc.


আপনি যদি চেষ্টা করেন hello worldতবে আউটপুট হওয়া উচিত Hello There, এক্ষেত্রে লোড্যাশ সহায়ক হবে না।
অভিষেক কুমার

Lodash এর @AbhishekKumar startCase আসলে রূপান্তর করবে hello worldকরার Hello World lodash.com/docs/4.17.15#upperFirst
user1696017

আপনি ঠিক ভাই। ভুল করে আমি লিখেছি hello thereকরতে hello world
অভিষেক কুমার

2
যতবারই আমি মনে করি "লোডাশের পাশাপাশি এটি করার কোনও উপায় নেই", এটি করে।
এফ্রু

ভি 4 হিসাবে সাবধান থাকুন এই ফাংশনটি ä এর মতো বিশেষ চরিত্রগুলি মুছে ফেলুন এবং এএসসিআইআইতে রূপান্তর করুন (এ ক্ষেত্রে এটি)
কোলেরেক

52

আমারও একই সমস্যা ছিল এবং এর সাথে এরকম আচরণ করেছি:

stringValue.replace(/([A-Z]+)*([A-Z][a-z])/g, "$1 $2")

আরও দৃ solution় সমাধানের জন্য:

stringValue.replace(/([A-Z]+)/g, " $1").replace(/([A-Z][a-z])/g, " $1")

http://jsfiddle.net/PeYYQ/

ইনপুট:

 helloThere 
 HelloThere 
 ILoveTheUSA
 iLoveTheUSA

আউটপুট:

 hello There 
 Hello There 
 I Love The USA
 i Love The USA

এটি শুরুতে একটি অতিরিক্ত স্থান দেয়
হান্নাদ রেহমান

4
ওপি যেমন জিজ্ঞাসা করেছে তেমন বাক্য মামলা নয়। প্রথম চিঠি মূলধন করা উচিত।
এইচ ডগ

এছাড়াও, এটি শব্দের মধ্যে একটি অতিরিক্ত স্থান যুক্ত করে
আলাক্রিটাস

34

পার্শ্ব প্রতিক্রিয়া ছাড়া উদাহরণ।

function camel2title(camelCase) {
  // no side-effects
  return camelCase
    // inject space before the upper case letters
    .replace(/([A-Z])/g, function(match) {
       return " " + match;
    })
    // replace first char with upper case
    .replace(/^./, function(match) {
      return match.toUpperCase();
    });
}

ES6 এ

const camel2title = (camelCase) => camelCase
  .replace(/([A-Z])/g, (match) => ` ${match}`)
  .replace(/^./, (match) => match.toUpperCase());

1
সলিড, এস -6 স্নিপেটের জন্য +1।
ব্র্যাডস্টেল

4
এফওয়াইআই, এটি বাক্যটির শুরুতে অতিরিক্ত শ্বেত স্থান যুক্ত করে।
ডেল জাক

20

উট-কেস-টু-টাইটেল-কেস ফাংশনগুলি পরীক্ষার জন্য আমি যে সেরা স্ট্রিংয়ের সন্ধান পেয়েছি তা হ'ল এটি একটি হাস্যকর অযৌক্তিক উদাহরণ, যা প্রচুর প্রান্তের ক্ষেত্রে পরীক্ষা করে। আমার জ্ঞানের সেরা হিসাবে, পূর্বে পোস্ট করা কোনও ফাংশন এটিকে সঠিকভাবে পরিচালনা করে না :

ToGetYourGEDInTimeASongAboutThe26ABCsIsOfTheEssenceButAPersonalIDCardForUser456InRoom26AContainingABC26TimesIsNotAsEasyAs123ForC3POOrR2D2Or2R2D

এটিকে রূপান্তর করা উচিত:

আপনার জিইডি সময়ে পেতে 26 টি এবিসি সম্পর্কে একটি গানের সার্থকতা রয়েছে তবে 456 রুমে এবিসি 26 এ থাকা ব্যবহারকারীর জন্য ব্যক্তিগত আইডি কার্ড সি 3 পিও বা আর 2 ডি 2 বা 2 আর 2 ডি এর পক্ষে 123 এর মতো সহজ নয় Is

আপনি যদি কেবল একটি সাধারণ ফাংশন চান যা উপরের মতো (এবং আগের উত্তরগুলির তুলনায় আরও বেশি কেস) পরিচালনা করে তবে আমি এখানে লিখেছি। এই কোডটি বিশেষভাবে মার্জিত বা দ্রুত নয়, তবে এটি সহজ, বোধগম্য এবং কাজ করে।

একটি অনলাইন চলমান উদাহরণ জেসফিডেলে রয়েছে , বা আপনি নীচে স্নিপেটের আউটপুটটি আপনার কনসোলে দেখতে পারেন:

// Take a single camel case string and convert it to a string of separate words (with spaces) at the camel-case boundaries.
// 
// E.g.:
var examples = [
    'ToGetYourGEDInTimeASongAboutThe26ABCsIsOfTheEssenceButAPersonalIDCardForUser456InRoom26AContainingABC26TimesIsNotAsEasyAs123ForC3POOrR2D2Or2R2D',
    //                                          --> To Get Your GED In Time A Song About The 26 ABCs Is Of The Essence But A Personal ID Card For User 456 In Room 26A Containing ABC 26 Times Is Not As Easy As 123 For C3PO Or R2D2 Or 2R2D
    'helloThere', //                              --> Hello There
    'HelloThere', //                              --> Hello There
    'ILoveTheUSA', //                             --> I Love The USA
    'iLoveTheUSA', //                             --> I Love The USA
    'DBHostCountry', //                           --> DB Host Country
    'SetSlot123ToInput456', //                    --> Set Slot 123 To Input 456
    'ILoveTheUSANetworkInTheUSA', //              --> I Love The USA Network In The USA
    'Limit_IOC_Duration', //                      --> Limit IOC Duration
    'This_is_a_Test_of_Network123_in_12_days', // --> This Is A Test Of Network 123 In 12 Days
    'ASongAboutTheABCsIsFunToSing', //            --> A Song About The ABCs Is Fun To Sing
    'CFDs', //                                    --> CFDs
    'DBSettings', //                              --> DB Settings
    'IWouldLove1Apple', //                        --> 1 Would Love 1 Apple
    'Employee22IsCool', //                        --> Employee 22 Is Cool
    'SubIDIn', //                                 --> Sub ID In
    'ConfigureCFDsImmediately', //                --> Configure CFDs Immediately
    'UseTakerLoginForOnBehalfOfSubIDInOrders', // --> Use Taker Login For On Behalf Of Sub ID In Orders
]

function camelCaseToTitleCase(in_camelCaseString) {
        var result = in_camelCaseString                         // "ToGetYourGEDInTimeASongAboutThe26ABCsIsOfTheEssenceButAPersonalIDCardForUser456InRoom26AContainingABC26TimesIsNotAsEasyAs123ForC3POOrR2D2Or2R2D"
            .replace(/([a-z])([A-Z][a-z])/g, "$1 $2")           // "To Get YourGEDIn TimeASong About The26ABCs IsOf The Essence ButAPersonalIDCard For User456In Room26AContainingABC26Times IsNot AsEasy As123ForC3POOrR2D2Or2R2D"
            .replace(/([A-Z][a-z])([A-Z])/g, "$1 $2")           // "To Get YourGEDIn TimeASong About The26ABCs Is Of The Essence ButAPersonalIDCard For User456In Room26AContainingABC26Times Is Not As Easy As123ForC3POOr R2D2Or2R2D"
            .replace(/([a-z])([A-Z]+[a-z])/g, "$1 $2")          // "To Get Your GEDIn Time ASong About The26ABCs Is Of The Essence But APersonal IDCard For User456In Room26AContainingABC26Times Is Not As Easy As123ForC3POOr R2D2Or2R2D"
            .replace(/([A-Z]+)([A-Z][a-z][a-z])/g, "$1 $2")     // "To Get Your GEDIn Time A Song About The26ABCs Is Of The Essence But A Personal ID Card For User456In Room26A ContainingABC26Times Is Not As Easy As123ForC3POOr R2D2Or2R2D"
            .replace(/([a-z]+)([A-Z0-9]+)/g, "$1 $2")           // "To Get Your GEDIn Time A Song About The 26ABCs Is Of The Essence But A Personal ID Card For User 456In Room 26A Containing ABC26Times Is Not As Easy As 123For C3POOr R2D2Or 2R2D"
            
            // Note: the next regex includes a special case to exclude plurals of acronyms, e.g. "ABCs"
            .replace(/([A-Z]+)([A-Z][a-rt-z][a-z]*)/g, "$1 $2") // "To Get Your GED In Time A Song About The 26ABCs Is Of The Essence But A Personal ID Card For User 456In Room 26A Containing ABC26Times Is Not As Easy As 123For C3PO Or R2D2Or 2R2D"
            .replace(/([0-9])([A-Z][a-z]+)/g, "$1 $2")          // "To Get Your GED In Time A Song About The 26ABCs Is Of The Essence But A Personal ID Card For User 456In Room 26A Containing ABC 26Times Is Not As Easy As 123For C3PO Or R2D2Or 2R2D"  

            // Note: the next two regexes use {2,} instead of + to add space on phrases like Room26A and 26ABCs but not on phrases like R2D2 and C3PO"
            .replace(/([A-Z]{2,})([0-9]{2,})/g, "$1 $2")        // "To Get Your GED In Time A Song About The 26ABCs Is Of The Essence But A Personal ID Card For User 456 In Room 26A Containing ABC 26 Times Is Not As Easy As 123 For C3PO Or R2D2 Or 2R2D"
            .replace(/([0-9]{2,})([A-Z]{2,})/g, "$1 $2")        // "To Get Your GED In Time A Song About The 26 ABCs Is Of The Essence But A Personal ID Card For User 456 In Room 26A Containing ABC 26 Times Is Not As Easy As 123 For C3PO Or R2D2 Or 2R2D"
            .trim();


  // capitalize the first letter
  return result.charAt(0).toUpperCase() + result.slice(1);
}

examples.forEach(str => console.log(str, ' --> \n', camelCaseToTitleCase(str)));


11

উপরের উদাহরণগুলির উপর ভিত্তি করে আমি এটি নিয়ে এসেছি:

const camelToTitle = (camelCase) => camelCase
  .replace(/([A-Z])/g, (match) => ` ${match}`)
  .replace(/^./, (match) => match.toUpperCase())
  .trim()

এটি আমার পক্ষে কাজ করে কারণ এটি .trim()প্রান্তের কেসটি পরিচালনা করতে ব্যবহার করে যেখানে প্রথম অক্ষরকে মূলধন দেওয়া হয় এবং আপনি অতিরিক্ত নেতৃস্থানীয় স্থান দিয়ে শেষ করেন।

তথ্যসূত্র: https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / গ্লোবাল_অবজেক্টস / স্ট্রিং / ট্রিম


10

ঠিক আছে, আমি গেমটি থেকে কয়েক বছর দেরিতে এসেছি, তবে আমার একই রকম প্রশ্ন ছিল এবং আমি প্রতিটি সম্ভাব্য ইনপুটটির জন্য একটি-প্রতিস্থাপন সমাধান করতে চাই। আমি এই থ্রেডে এবং @Benjamin Udink দশ কেট মধ্যে @ZenMaster কৃতিত্ব অধিকাংশ দিতে হবে এই থ্রেড। কোডটি এখানে:

var camelEdges = /([A-Z](?=[A-Z][a-z])|[^A-Z](?=[A-Z])|[a-zA-Z](?=[^a-zA-Z]))/g;
var textArray = ["lowercase",
                 "Class",
                 "MyClass",
                 "HTML",
                 "PDFLoader",
                 "AString",
                 "SimpleXMLParser",
                 "GL11Version",
                 "99Bottles",
                 "May5",
                 "BFG9000"];
var text;
var resultArray = [];
for (var i = 0; i < a.length; i++){
    text = a[i];
    text = text.replace(camelEdges,'$1 ');
    text = text.charAt(0).toUpperCase() + text.slice(1);
    resultArray.push(text);
}

এর তিনটি ধারা রয়েছে, সমস্তই রেকএক্স ইঞ্জিনকে অনেক বেশি অক্ষর ব্যবহার থেকে বিরত রাখতে লুক এহেড ব্যবহার করে :

  1. [A-Z](?=[A-Z][a-z])মূলধনীর পরে একটি ছোট হাতের অক্ষর অনুসন্ধান করা হয়। এটি মার্কিন যুক্তরাষ্ট্রের মতো সংক্ষিপ্ত বিবরণ শেষ করতে হবে।
  2. [^A-Z](?=[A-Z])একটি মূলধন অক্ষরের পরে একটি মূলধন-অক্ষরের সন্ধান করে। এটি মাইওয়ার্ডের মতো শব্দ এবং 99 বোতলগুলির মতো প্রতীকগুলি শেষ করে।
  3. [a-zA-Z](?=[^a-zA-Z])একটি অক্ষর পরে একটি চিঠি জন্য সন্ধান করুন। এটি BFG9000 এর মতো প্রতীকগুলির আগে শব্দগুলি শেষ করে।

এই প্রশ্নটি আমার অনুসন্ধানের ফলাফলগুলির শীর্ষে ছিল, তাই আশা করি আমি অন্যদের কিছুটা সময় বাঁচাতে পারব!


9

এটির আমার সংস্করণটি এখানে। এটি প্রতিটি আপারকেস ইংলিশ লেটারের আগে একটি স্পেস যোগ করে যা ছোট হাতের ইংরেজি বর্ণের পরে আসে এবং প্রয়োজনে প্রথম অক্ষরকে বড় করে দেয়:

উদাহরণস্বরূপ:
ThisIsCamelCase -> এটি উটের কেস
এই ইসকেলকেস -> এটি উটের কেস
এইআইসেল ক্যামেল 123 -> এটি উটের কেস 123

  function camelCaseToTitleCase(camelCase){
    if (camelCase == null || camelCase == "") {
      return camelCase;
    }

    camelCase = camelCase.trim();
    var newText = "";
    for (var i = 0; i < camelCase.length; i++) {
      if (/[A-Z]/.test(camelCase[i])
          && i != 0
          && /[a-z]/.test(camelCase[i-1])) {
        newText += " ";
      }
      if (i == 0 && /[a-z]/.test(camelCase[i]))
      {
        newText += camelCase[i].toUpperCase();
      } else {
        newText += camelCase[i];
      }
    }

    return newText;
  }

6

এই বাস্তবায়নটি একটানা বড় বড় অক্ষর এবং সংখ্যা বিবেচনায় নেয়।

function camelToTitleCase(str) {
  return str
    .replace(/[0-9]{2,}/g, match => ` ${match} `)
    .replace(/[^A-Z0-9][A-Z]/g, match => `${match[0]} ${match[1]}`)
    .replace(/[A-Z][A-Z][^A-Z0-9]/g, match => `${match[0]} ${match[1]}${match[2]}`)
    .replace(/[ ]{2,}/g, match => ' ')
    .replace(/\s./g, match => match.toUpperCase())
    .replace(/^./, match => match.toUpperCase())
    .trim();
}

// ----------------------------------------------------- //

var testSet = [
    'camelCase',
    'camelTOPCase',
    'aP2PConnection',
    'superSimpleExample',
    'aGoodIPAddress',
    'goodNumber90text',
    'bad132Number90text',
];

testSet.forEach(function(item) {
    console.log(item, '->', camelToTitleCase(item));
});

প্রত্যাশিত আউটপুট:

camelCase -> Camel Case
camelTOPCase -> Camel TOP Case
aP2PConnection -> A P2P Connection
superSimpleExample -> Super Simple Example
aGoodIPAddress -> A Good IP Address
goodNumber90text -> Good Number 90 Text
bad132Number90text -> Bad 132 Number 90 Text

আমি ক্রিস ক্লিনের উত্তরটি ব্যবহার করবো যা "আইপি অ্যাড্রেস" এর মতো স্ট্রিংগুলির জন্য উপযুক্ত (যেখানে এই ফাংশনটি "আইপি অ্যাড্রেস" রূপান্তরিত করে
জন হ্যাম

@ জোহনহ্যাম আপনার ইনপুটটি "আইপি ঠিকানা", তাই না? এটি উটের মামলা নয়! কি উট ক্ষেত্রে এখানে সম্পর্কে পড়ুন: en.wikipedia.org/wiki/Camel_case এবং ইনপুট "IPADDRESS" শুধুমাত্র মধ্যে স্থান না করা। এই ফাংশনটি সূক্ষ্মভাবে কাজ করে।
দিপু

3

আপনি এর মতো একটি ফাংশন ব্যবহার করতে পারেন:

function fixStr(str) {
    var out = str.replace(/^\s*/, "");  // strip leading spaces
    out = out.replace(/^[a-z]|[^\s][A-Z]/g, function(str, offset) {
        if (offset == 0) {
            return(str.toUpperCase());
        } else {
            return(str.substr(0,1) + " " + str.substr(1).toUpperCase());
        }
    });
    return(out);
}

"hello World" ==> "Hello World"
"HelloWorld" ==> "Hello World"
"FunInTheSun" ==? "Fun In The Sun"

একগুচ্ছ পরীক্ষার স্ট্রিং সহ কোড: http://jsfiddle.net/jfriend00/FWLuV/

বিকল্প সংস্করণ যা এখানে স্থানের শীর্ষস্থান রাখে: http://jsfiddle.net/jfriend00/Uy2ac/


আমি জানি যে এটি প্রশ্নের কোনও প্রয়োজন ছিল না তবে " helloWorld"উদাহরণস্বরূপ আপনার সমাধানটি কার্যকর হয় না ।
জেনমাস্টার

হ্যাঁ, এটি একটি নতুন প্রয়োজন। আপনি মূলত যা চেয়েছিলেন ঠিক তেমন করার চেষ্টা করেছি। যাইহোক, শর্ট কাট উপায় যদি আপনার আর কোনওভাবে প্রয়োজন না হয় তবে শীর্ষস্থানীয় স্থানগুলি সরিয়ে ফেলা সহজ। আপনি যদি এগুলি জায়গায় রেখে যেতে চান, এটিও করা যেতে পারে।
jender00

এখানে একটি জেএসফিডাল রয়েছে যা একটি পদ্ধতি দেখায় যা "হ্যালোওয়ার্ল্ড" এর নতুন প্রয়োজনের সাথে কাজ করে এবং শীর্ষস্থান রাখে (যদি আপনি তা চান): jsfiddle.net/jender00/Uy2ac
jfriend00

খুশী হলাম। যদিও এর অভিনয় সম্পর্কে আমি অবাক হই। প্রতিটি ম্যাচে হ্যান্ডলারের ফাংশনটি ডাকা হবে, তাই না?
জেনমাস্টার

যদি আপনি পারফরম্যান্স-সংবেদনশীল সেটিংয়ে এর পরিমাণ এক মিলিয়ন করছেন, দ্রুততম সমাধানটি কী হবে তা দেখার জন্য এটি ব্রাউজারগুলির একটি গুচ্ছের জন্য কিছু জেএসপিআইপি টেস্টিং লাগবে। কলব্যাক কল করা কোনও বড় বিষয় নয়। নিয়মিত এক্সপ্রেশন, যে কোনও ধরণের, খুব দ্রুত সমাধান বনাম বিশেষ উদ্দেশ্য কোড খুব কমই হয় তবে তারা প্রচুর কোড সংরক্ষণ করে (এবং প্রায়শই কিছু বাগ) তাই প্রায়শই পছন্দসই পছন্দ। এটি আপনার প্রয়োজনীয়তার উপর নির্ভর করে।
jender00

3

এই লাইব্রেরি চেষ্টা করুন

http://sugarjs.com/api/String/titleize

'man from the boondocks'.titleize()>"Man from the Boondocks"
'x-men: the last stand'.titleize()>"X Men: The Last Stand"
'TheManWithoutAPast'.titleize()>"The Man Without a Past"
'raiders_of_the_lost_ark'.titleize()>"Raiders of the Lost Ark"

2

উপরের কোনও উত্তরই আমার পক্ষে নিখুঁতভাবে কাজ করে নি, তাই নিজের সাইকেল নিয়ে আসতে হবে:

function camelCaseToTitle(camelCase) {
    if (!camelCase) {
        return '';
    }

    var pascalCase = camelCase.charAt(0).toUpperCase() + camelCase.substr(1);
    return pascalCase
        .replace(/([a-z])([A-Z])/g, '$1 $2')
        .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
        .replace(/([a-z])([0-9])/gi, '$1 $2')
        .replace(/([0-9])([a-z])/gi, '$1 $2');
}

পরীক্ষার কেস:

null => ''
'' => ''
'simpleString' => 'Simple String'
'stringWithABBREVIATIONInside => 'String With ABBREVIATION Inside'
'stringWithNumber123' => 'String With Number 123'
'complexExampleWith123ABBR890Etc' => 'Complex Example With 123 ABBR 890 Etc'

2

এটি আমার জন্য কাজ করে এটি পরীক্ষা করে দেখুন

CamelcaseToWord ( "Myname"); // আমার নাম ফেরত দেয়

    function CamelcaseToWord(string){
      return string.replace(/([A-Z]+)/g, " $1").replace(/([A-Z][a-z])/g, " $1");
    }

1
এসও তে স্বাগতম :) আপনার কোডটিতে কমপক্ষে একটি ব্যাখ্যামূলক লাইন যুক্ত করুন। এছাড়াও এটি আপনার বৌদ্ধিক কাজ নিশ্চিত করুন বা উত্স (গুলি) এর উদ্ধৃতি দিন।
লোরেঞ্জ লো Sauer

আপনার কোনও "$ 1" এর পরে স্থান সরিয়ে নেওয়া উচিত। string.replace(/([A-Z]+)/g, " $1").replace(/([A-Z][a-z])/g, "$1");
ভ্যালেরিয়া শিপিনার

2

আমি মনে করি এটি কেবল রেগ এক্সপ্রেস /([a-z]|[A-Z]+)([A-Z])/gএবং প্রতিস্থাপনের মাধ্যমেই করা যেতে পারে "$1 $2"

ILoveTheUSADope -> আমি মার্কিন যুক্তরাষ্ট্র ডপকে ভালবাসি


ঠিক নয়, স্ট্রিংয়ের জন্য QWERTYএটি ফিরে আসে QWERT Y
itachi

2

আপনি যদি ক্যাপিটাল ক্যামেল কেস নিয়ে কাজ করেন তবে এই স্নিপেট আপনাকে সহায়তা করতে পারে, এছাড়াও এতে কয়েকটি চশমা রয়েছে যাতে আপনি নিশ্চিত হন যে এটি আপনার ক্ষেত্রে উপযুক্ত case

export const fromCamelCaseToSentence = (word) =>
  word
    .replace(/([A-Z][a-z]+)/g, ' $1')
    .replace(/([A-Z]{2,})/g, ' $1')
    .replace(/\s{2,}/g, ' ')
    .trim();

এবং চশমা:

describe('fromCamelCaseToSentence', () => {
 test('does not fall with a single word', () => {
   expect(fromCamelCaseToSentence('Approved')).toContain('Approved')
   expect(fromCamelCaseToSentence('MDA')).toContain('MDA')
 })

 test('does not fall with an empty string', () => {
   expect(fromCamelCaseToSentence('')).toContain('')
 })

 test('returns the separated by space words', () => {
   expect(fromCamelCaseToSentence('NotApprovedStatus')).toContain('Not Approved Status')
   expect(fromCamelCaseToSentence('GDBState')).toContain('GDB State')
   expect(fromCamelCaseToSentence('StatusDGG')).toContain('Status DGG')
 })
})

1

আমি প্রত্যেকের জবাব চেষ্টা করে দেখিনি, তবে কয়েকটি সমাধান যেগুলির সাথে আমি টিনক করেছি তা আমার সমস্ত প্রয়োজনীয়তার সাথে মেলে না।

আমি এমন কিছু নিয়ে আসতে সক্ষম হয়েছি যা ...

export const jsObjToCSSString = (o={}) =>
    Object.keys(o)
          .map(key => ({ key, value: o[key] }))
          .map(({key, value}) =>
              ({
                key: key.replace( /([A-Z])/g, "-$1").toLowerCase(),
                value
              })
          )
          .reduce(
              (css, {key, value}) => 
                  `${css} ${key}: ${value}; `.trim(), 
              '')

1

নীচে লিঙ্কটি যা রেটেক্স ব্যবহার করে উটের ক্ষেত্রে স্ট্রিংয়ের বাক্য স্ট্রিংয়ে প্রদর্শিত হয়।

ইনপুট

myCamelCaseSTRINGToSPLITDemo

আউটপুট

my Camel Case STRING To SPLIT Demo


এটি উটের কেসের বাক্য পাঠ্যে রূপান্তরিত করার জন্য রেজেেক্স

(?=[A-Z][a-z])|([A-Z]+)([A-Z][a-rt-z][a-z]\*)

সাবস্ক্রিপশন $1 $2হিসাবে।

রেজেক্সে রূপান্তরটি দেখতে ক্লিক করুন


আপনার উত্তরের মূল অংশে আপনার লিঙ্ক থেকে প্রাসঙ্গিক সামগ্রী সরবরাহ করুন।
গ্রান্ট মিলার

1

জাভাস্ক্রিপ্ট ইনপুট করুন

আউটপুট জাভা স্ক্রিপ্ট

   var text = 'javaScript';
    text.replace(/([a-z])([A-Z][a-z])/g, "$1 $2").charAt(0).toUpperCase()+text.slice(1).replace(/([a-z])([A-Z][a-z])/g, "$1 $2");

1

রেজেক্সের ভিত্তিতে আরও একটি সমাধান।

respace(str) {
  const regex = /([A-Z])(?=[A-Z][a-z])|([a-z])(?=[A-Z])/g;
  return str.replace(regex, '$& ');
}

ব্যাখ্যা

Regex উপরে দুটি একই দ্বারা পৃথক অংশ গঠিত বা অপারেটর। প্রথম অর্ধেক:

  1. ([A-Z]) - বড় হাতের অক্ষরের সাথে মেলে ...
  2. (?=[A-Z][a-z]) - তারপরে বড় হাতের অক্ষর এবং ছোট হাতের অক্ষরগুলির ক্রম অনুসরণ করে।

সিকোয়েন্স এফও- তে প্রয়োগ করা হলে , এটি কার্যকরভাবে তার এফ অক্ষরের সাথে মেলে ।

বা দ্বিতীয় দৃশ্য:

  1. ([a-z]) - ছোট হাতের অক্ষর মেলে ...
  2. (?=[A-Z]) - তারপরে একটি বড় হাতের অক্ষর

সিকোয়েন্স বারফুতে প্রয়োগ করা হলে এটি কার্যকরভাবে তার আর অক্ষরের সাথে মেলে ।

সমস্ত প্রতিস্থাপন প্রার্থী পাওয়া গেলে, শেষ করণীয় হ'ল তাদের একই অক্ষর দিয়ে প্রতিস্থাপন করা হয় তবে অতিরিক্ত স্থানের অক্ষর দিয়ে। এর জন্য আমরা '$& 'প্রতিস্থাপন হিসাবে ব্যবহার করতে পারি এবং এটি কোনও স্থানের অক্ষর অনুসারে কোনও মিলিত সাবস্ট্রিংয়ের সমাধান করবে।

উদাহরণ

const regex = /([A-Z])(?=[A-Z][a-z])|([a-z])(?=[A-Z])/g
const testWords = ['ACoolExample', 'fooBar', 'INAndOUT', 'QWERTY', 'fooBBar']

testWords.map(w => w.replace(regex, '$& '))
->(5) ["A Cool Example", "foo Bar", "IN And OUT", "QWERTY", "foo B Bar"]

-1

উপরের কয়েকটি চিন্তাভাবনা নিয়ে খুশি না হওয়ার পরে আমি আরও একটি ইএস 6 সমাধান যুক্ত করছি।

https://codepen.io/902Labs/pen/mxdxRv?editors=0010#0

const camelize = (str) => str
    .split(' ')
    .map(([first, ...theRest]) => (
        `${first.toUpperCase()}${theRest.join('').toLowerCase()}`)
    )
    .join(' ');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.