কিভাবে একটি স্ট্রিং মধ্যে বিশেষ অক্ষর প্রতিস্থাপন?


91

আমার প্রচুর বিশেষ অক্ষর রয়েছে string আমি এই সমস্তগুলি মুছে ফেলতে চাই, তবে বর্ণানুক্রমিক অক্ষর রাখতে চাই।

কিভাবে আমি এটি করতে পারব?


উত্তর:


187

এটি আপনার অর্থের উপর নির্ভর করে। আপনি যদি এগুলি থেকে মুক্তি পেতে চান তবে এটি করুন:
(আপডেট: স্পষ্টত আপনি অঙ্কগুলিও বজায় রাখতে চান, সে ক্ষেত্রে দ্বিতীয় লাইনটি ব্যবহার করুন)

String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");

বা সমতুল্য:

String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");

(এগুলি সমস্তই রেজেক্স প্যাটার্নটি পূর্ববর্তী করে এবং একটি ধ্রুবক হিসাবে এটি সঞ্চয় করে উল্লেখযোগ্যভাবে উন্নতি করা যেতে পারে)

বা, পেয়ারা সহ :

private static final CharMatcher ALNUM =
  CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'))
  .or(CharMatcher.inRange('0', '9')).precomputed();
// ...
String alphaAndDigits = ALNUM.retainFrom(input);

তবে আপনি যদি উচ্চারণযুক্ত চরিত্রগুলিকে এখনও বোধগম্য কিছুতে পরিণত করতে চান যা এখনও অ্যাসিআই হয় তবে এই প্রশ্নগুলি দেখুন:


আমি যখন এই ফাংশনটি ব্যবহার করছি তখন এটি সমস্ত সংখ্যাও মুছে ফেলা হবে b তবে আমি সংখ্যাগুলি অপসারণ করতে চাই না just বিশেষ চরিত্রগুলি মুছতে চাই। দয়া করে কিছু প্রস্তাব দিন ..
তনু

ঠিক আছে আপনি বলেছিলেন আপনি কেবল বর্ণমালা চেয়েছিলেন তবে আমি আমার উত্তরটি এক মিনিটের মধ্যে আপডেট করব
সান প্যাট্রিক ফ্লয়েড

আমি কনটাক্ট স্ট্রিং করতে চাই তবে কিছু শর্তের সাথে ১.এখানে যদি কেবল একটি ফলাফল হয় তবে কোন কনটাক্টের প্রয়োজন হয় না। যদি নীচের ফর্মের উদাহরণটিতে কনক্যাট স্ট্রিংয়ের চেয়ে 1 এর বেশি ফলাফল হয়: স্ট্যাক + ওভার + প্রবাহ
তনু

4
@ তানু এটি আলাদা প্রশ্ন। এটিকে নতুন করে তৈরি করুন
পেক্কা

আমি যদি চাই না যে স্থানগুলি সরানো হোক? বা ট্যাবগুলির মতো সমস্ত স্পেস বলুন, নিউলাইনগুলি কেবল একটি স্থান হিসাবে ধসে গেছে?
জঘন্য

74

আমি এটি ব্যবহার করছি।

s = s.replaceAll("\\W", ""); 

এটি স্ট্রিং থেকে সমস্ত বিশেষ অক্ষর প্রতিস্থাপন করে।

এখানে

\ ডাব্লু: [a-zA-Z_0-9] এর জন্য একটি শব্দ অক্ষর

\ ডাব্লু: একটি শব্দহীন চরিত্র


<script> সতর্কতা ('XSS আক্রমণ') </script> এর জন্য কাজ করে না। কীভাবে '<', '>', '\' অক্ষর মুছবেন?
মনোজ

11

বর্ণমালা অক্ষর রাখতে আপনি নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে পারেন।

replaceAll("[^a-zA-Z0-9]", "");

এবং আপনি যদি কেবল বর্ণানুক্রমিক অক্ষর রাখতে চান তবে এটি ব্যবহার করুন

replaceAll("[^a-zA-Z]", "");

6
স্থান ব্যবহারের জন্যreplaceAll("[^a-zA-Z0-9 ]", "");
ق

6

কোনও বিশেষ অক্ষর দ্বারা প্রতিস্থাপন করুন

replaceAll("\\your special character","new character");

উদাহরণস্বরূপ: * সমস্ত ঘটনাকে সাদা স্থানের সাথে প্রতিস্থাপন করতে

replaceAll("\\*","");

* এই বিবৃতিটি একবারে কেবল এক ধরণের বিশেষ চরিত্রকে প্রতিস্থাপন করতে পারে


"আমি একটি স্ট্রিংয়ে বিশেষ অক্ষরগুলি কীভাবে প্রতিস্থাপন করব?" প্রশ্নের শিরোনামটি দেখে আমি অবশ্যই কী খুঁজছিলাম? ধন্যবাদ!
মিঃ ড্র্রু

2
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");

এখানে স্থান, কমা এবং এম্পারস্যান্ড বাদে সমস্ত বিশেষ অক্ষর প্রতিস্থাপন করা হয়েছে। আপনি নিম্নলিখিত নিয়মিত অভিব্যক্তি দ্বারা স্থান, কমা এবং এম্পারস্যান্ড বাদ দিতে পারেন।

string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");

ইনপুটটি স্ট্রিং যেখানে অক্ষরগুলি প্রতিস্থাপন করা দরকার।


2

আন্দ্রেজে ডয়েলের উত্তরের উদাহরণ অনুসরণ করে , আমি মনে করি যে আরও ভাল সমাধান ব্যবহার করা উচিত org.apache.commons.lang3.StringUtils.stripAccents():

package bla.bla.utility;

import org.apache.commons.lang3.StringUtils;

public class UriUtility {
    public static String normalizeUri(String s) {
        String r = StringUtils.stripAccents(s);
        r = r.replace(" ", "_");
        r = r.replaceAll("[^\\.A-Za-z0-9_]", "");
        return r;
    }
}

0

আপনি সমস্ত বিশেষ অক্ষর সন্ধান করতে স্ট্রিংগুলিতে বেসিক নিয়মিত এক্সপ্রেশন ব্যবহার করতে পারেন বা ব্যবহারকারীর সংজ্ঞায়িত স্ট্রিং অনুসন্ধান / সংশোধন / মুছতে প্যাটার্ন এবং ম্যাচার ক্লাস ব্যবহার করতে পারেন। এই লিঙ্কটিতে নিয়মিত এক্সপ্রেশনগুলির জন্য কিছু সহজ এবং সহজে বোঝার উদাহরণ রয়েছে: http://www.vogella.de/articles/JavaRegularExpressions/article.html


0

আপনি উইন্ডো পিসিতে চরিত্রচিত্রের সরঞ্জাম থেকে সেই জাঙ্ক চরিত্রের জন্য ইউনিকোড পেতে পারেন এবং কপিরাইট প্রতীকের জন্য eg u যেমন \ u00a9 যুক্ত করতে পারেন। এখন আপনি সেই স্ট্রিংটি সেই নির্দিষ্ট জাঙ্ক ক্যাচারাকারের সাহায্যে ব্যবহার করতে পারেন, কোনও জাঙ্ক চরিত্র অপসারণ করবেন না তবে যথাযথ ইউনিকোড দিয়ে প্রতিস্থাপন করুন।



-1
let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();

আপনি কি রেজেক্সকে কিছুটা ব্যাখ্যা করতে পারেন?
stdunbar

আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি নিজের কোডটি ব্যাখ্যা করতে আপনার উত্তর বিভাগে নোট যুক্ত করুন। ভাল উত্তর লিখতে সম্পর্কে আরও পড়ুন ।
জো ফেরেন্ডজ

এটি আসলে প্রশ্নের উত্তর দেয় না। আপনি কি অন্য কিছু প্রশ্ন থাকে, তাহলে আপনি এটি ক্লিক করে অনুরোধ করতে পারেন প্রশ্ন জিজ্ঞাসা করুন । আপনি এটিও করতে পারেন একটি খয়রাত যোগ একবার আপনি যথেষ্ট আছে এই প্রশ্নের আরো দৃষ্টি আকর্ষণ করতে খ্যাতি । - পর্যালোচনা থেকে
আমান গার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.