Hướng dẫn vowel remover codewars javascript - mã loại bỏ nguyên âm javascript

Hướng dẫn

Tạo một hàm gọi là phím tắt để loại bỏ tất cả các nguyên âm chữ thường trong một chuỗi đã cho.

Ví dụ

"Xin chào" -> "HLL" "CodeWars" -> "CDWRs" "Goodbye" -> "Gdby" "Hello" -> "Xin chào"
"codewars" --> "cdwrs"
"goodbye" --> "gdby"
"HELLO" --> "HELLO"

Lưu ý: Đừng lo lắng về nguyên âm chữ hoa.

Giải pháp của tôi:

function shortcut [string] {
  return string.split[/[aeiou]/g].join['']
}

Nhập chế độ FullScreenen EXIT Mode FullScreen

Giải trình

Lần đầu tiên tôi chia chuỗi bằng cách sử dụng biểu thức regex, tạo ra mọi giọng hát từ chuỗi và sau đó tôi vừa tham gia mảng

Nhận xét làm thế nào bạn sẽ giải quyết kata này và tại sao? 👇🤔

Github của tôi twitter của tôi giải quyết kata này
My twitter
Solve this Kata

  • Đăng ký

    Thời gian để nhận được danh dự của bạn

  • Tập huấn
  • Thực tiễn

    Hoàn thành thách thức Kata để kiếm được danh dự và cấp bậc. Hãy đào tạo lại để trau dồi kỹ thuậtKata to earn honor and ranks. Re-train to hone technique

  • Freestyle sparring

    Thay phiên nhau phối lại và tái cấu trúc mã người khác thông qua KumiteKumite

  • Sự nghiệp
  • Những cơ hội

    Tìm thử thách nghề nghiệp tiếp theo của bạn - được cung cấp bởi các công việc đủ điều kiệnQualified Jobs

  • Cộng đồng
  • Bảng xếp hạng

    Đạt được danh dự và tiến lên bảng xếp hạng toàn cầu

  • Trò chuyện

    Tham gia máy chủ Discord của chúng tôi và trò chuyện với các chiến binh mã đồng nghiệp của bạnDiscord server and chat with your fellow code warriors

  • Thảo luận

    Xem Hội đồng Thảo luận GitHub của chúng tôi để thảo luận về các chủ đề CodeWars chungGithub Discussions board to discuss general Codewars topics

  • Về
  • Tài liệu

    Tìm hiểu về tất cả các khía cạnh khác nhau của các mã hóa

Nguyên âm tẩy

11.460 của 22.909naazof 22,909naaz

  • Thông tin chi tiết
  • Các giải pháp
  • Bài giảng [111]

Description:

Tải mô tả ...

Kata tương tự:

Thêm bởi tác giả:

Kiểm tra những kata khác được tạo bởi Naaz

Stats:

TạoNgày 4 tháng 5 năm 2015
Được phát hànhNgày 4 tháng 5 năm 2015
Được phát hành30215
Chiến binh được đào tạo1026
Tổng số bỏ qua56107
Tổng số hồ sơ22909
Tổng số thời gian hoàn thành11460
Hoàn thành JavaScript7971
Hoàn thành Python1546
Hoàn thành Ruby1531
C# Hoàn thành555
Hoàn thành Haskell7
Hoàn thành COBOL135
C Hoàn thành219
Hoàn thành Java217

Tổng số sao % phiếu bầu với xếp hạng phản hồi tích cực
92% trong số 2682 2323
Tổng số phiếu bầu "rất hài lòng" 303
Tổng số phiếu bầu "có phần hài lòng" 56

Tôi đang cố gắng tước các nguyên âm trong một chuỗi. Tôi biết tôi nên sử dụng str.replace nhưng tôi gặp khó khăn về cách đưa nó vào một khoảng.

Nội phân Chính showShow

  • Thuật toán phỏng vấn chuẩn bị
  • Xem xét các điểm cuối cụ thể
  • Chấp nhận chuỗi hợp lệ
  • Tránh xử lý không cần thiết của các chuỗi không có nguyên âm
  • Cung cấp một ví dụ rõ ràng về chức năng thuật toán
  • Thành phần thuật toán
  • Chiếm các chuỗi không hợp lệ
  • Kiểm tra một chuỗi cho nguyên âm
  • Cắt các nguyên âm
  • Hoàn thành thuật toán bỏ qua
  • Tùy chọn: Kế toán cho Y như một nguyên âm
  • Nhận dạng và xây dựng chức năng xung quanh các ràng buộc
  • Tạo một hàm để nhận ra y như một nguyên âm
  • Kế toán để chấm dứt các ký tự đặc biệt
  • Sửa đổi các chức năng trợ giúp được thiết lập
  • Thay đổi các chiếc Hasvowels để tính toán cho y
  • Thay đổi nguyên âm
  • Loại bỏ y như một nguyên âm
  • Loại bỏ tất cả các nguyên âm khác
  • Cải thiện chức năng hoàn thành
  • Làm thế nào để bạn loại bỏ tất cả các nguyên âm khỏi một chuỗi?
  • Làm cách nào để loại bỏ một ký tự khỏi chuỗi trong JavaScript?
  • Làm thế nào để bạn loại bỏ các nguyên âm liên tiếp trong java?
  • Làm thế nào để bạn phân tách các nguyên âm và phụ âm trong một chuỗi trong JavaScript?

Đây là ít hơn những gì tôi đang tìm kiếm:

Viết hàm JavaScript có trong chuỗi s và trả về chuỗi tương đương với s nhưng với tất cả các nguyên âm ASCII bị xóa. Ex:

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
1 Trả về:
function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
2

Xin vui lòng giúp đỡ!

spences10

5501 Huy hiệu vàng16 Huy hiệu bạc31 Huy hiệu đồng1 gold badge16 silver badges31 bronze badges

Hỏi ngày 11 tháng 12 năm 2012 lúc 22:06Dec 11, 2012 at 22:06

2

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
3 là tất cả những gì bạn cần.

Đã trả lời ngày 11 tháng 12 năm 2012 lúc 22:08Dec 11, 2012 at 22:08

Để thay thế các nguyên âm, bạn có thể sử dụng biểu thức thông thường đơn giản:

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}

Đối với phần về việc đưa nó vào một khoảng thời gian, không chắc chắn 100% ý bạn, nhưng có lẽ một cái gì đó như thế này:

Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

Đã trả lời ngày 11 tháng 12 năm 2012 lúc 22:14Dec 11, 2012 at 22:14

Pavelgjpavelgjpavelgj

2.21610 Huy hiệu bạc13 Huy hiệu đồng10 silver badges13 bronze badges

2

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
4

Đã trả lời ngày 11 tháng 12 năm 2012 lúc 22:10Dec 11, 2012 at 22:10

Thuật toán phỏng vấn chuẩn bị

Ảnh của Moritz Schmidt trên unplash

Gần đây, tôi đã ghi chú và cố gắng đưa ra một ví dụ về một chức năng sẽ được sử dụng trong một thư viện chuyên về thao tác chuỗi.

Tôi đã viết cho mình một vài ví dụ, khi một ý tưởng xuất hiện trong đầu tôi: Đó là cách thực hành tốt để thử và tạo ra một chức năng lấy một chuỗi, và đưa nó trở lại mà không có nguyên âm?

Đó là cách mà tôi bắt đầu mã hóa thuật toán này, mà tôi quyết định gọi

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
5.

Tôi vừa trở về sau kỳ nghỉ, vì vậy một vấn đề ánh sáng như thế này là một cách tuyệt vời để đưa bản thân trở lại vào rãnh của các thuật toán mã hóa. Trao cho mình những thử thách nhỏ như thế này khiến bạn rơi vào một suy nghĩ nhất định, một nhóm tinh thần nếu bạn muốn, một điều mà tôi chắc chắn đã nhúng chân vào một thời gian.

Nó cũng đã được một thời gian kể từ khi tôi loay hoay với một số thứ trong vani JS hoặc với các biểu thức thông thường, cả hai đều đặc biệt hữu ích khi nói đến thao tác chuỗi.

Bạn có thể theo dõi tất cả mọi thứ trong bài viết này thông qua repo GitHub này mà tôi đã tạo: Vowelcut.

Hai tệp đầu tiên của việc tạo ra thuật toán này và có các phiên bản chú thích và đơn giản, vì vậy hãy sử dụng bất kỳ ai hoạt động tốt nhất cho bạn. Tôi sẽ đăng mã từ phiên bản đơn giản, vì các bình luận phần lớn phản ánh những gì tôi đã viết trong bài viết này.

. phần tùy chọn của bài viết này.]

Với tất cả những điều đó ngoài đường, hãy để bắt đầu đi qua quá trình xây dựng!

Xem xét các điểm cuối cụ thể

Viết ra các điểm cuối của bạn trước khi viết thuật toán có thể giúp thiết lập những gì bạn muốn nó làm.

Trên đây là một bản tin ngắn gọn về những gì tôi muốn thực hiện với chức năng này.

Bằng cách viết ra các điểm cuối, chúng tôi cung cấp cho mình một cái gì đó cụ thể để đề cập đến khi nói đến việc tạo ra thuật toán. Điều này cũng giúp chúng tôi ghi nhớ những hạn chế mà chúng tôi có thể gặp phải hoặc những khó khăn tiềm tàng có thể phát sinh.

Chấp nhận chuỗi hợp lệ

Ba điểm cuối đầu tiên đối phó với phân tích của đối số được đưa ra. Một chuỗi nên có những phẩm chất nhất định và nếu không, một thông báo lỗi sẽ được trả lại cho người dùng liên quan đến vấn đề là gì và biện pháp khắc phục cho nó.

Đầu tiên, vì toàn bộ mục tiêu của thuật toán này là thao tác chuỗi, chúng tôi nên đảm bảo rằng những gì chúng tôi thực sự làm việc là một chuỗi ở nơi đầu tiên! Điều đó dễ dàng giải quyết với toán tử

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
6 [được thảo luận sau], nhưng không có tài khoản cho các chuỗi không mong muốn.

Tôi thực sự muốn nghiêm ngặt về các loại chuỗi mà thuật toán này sẽ xử lý - sau tất cả, nếu không có chữ cái nào trong đó, tại sao phải tìm kiếm nguyên âm ở nơi đầu tiên? Đó là nơi mà sự cần thiết phải xác định các chuỗi thiếu các ký tự bảng chữ cái phát sinh.

Cuối cùng, tôi muốn một tin nhắn cụ thể nếu một chuỗi trống bằng cách nào đó đã thông qua.

Mặc dù điểm cuối thứ hai của chúng tôi đã chiếm thiếu các chữ cái, nhưng một chuỗi không có nội dung nào khác nhau rõ rệt. Ergo, chúng ta cũng nên có một thông điệp phản ánh tình huống này.

Tránh xử lý không cần thiết của các chuỗi không có nguyên âm

Chúng tôi muốn đảm bảo rằng chúng tôi trả về một chuỗi với các nguyên âm được xóa-trong trường hợp chuỗi một ký tự chỉ là một nguyên âm, điều đó có nghĩa là chúng tôi chỉ nên trả lại một chuỗi trống.

Nếu chúng ta có một chuỗi một nhân vật không phải là một nguyên âm, chúng ta chỉ nên trả lại nhân vật.

Cung cấp một ví dụ rõ ràng về chức năng thuật toán

Cuối cùng, chúng ta nên có một câu ví dụ và kết quả được đưa ra nguyên âm của nó sẽ là gì.

Tôi là một fan hâm mộ của Princess Peach [Super Smash Bros. Melee, có ai không?], Và tôi muốn có một câu khá dài để làm việc để làm việc tốt cho tôi. Bằng cách biết những gì chúng tôi sẽ cung cấp và nhận, chúng tôi có thể sử dụng lại câu này sau và so sánh nó.

Lưu ý làm thế nào tất cả những điều này là những điểm cuối thực sự đơn giản. Nếu bạn không thoải mái với thử nghiệm đơn vị, một bài tập như thế này là một nơi tuyệt vời để bắt đầu.

Sự đơn giản của thuật toán này và các chức năng trợ giúp của nó dẫn đến dễ dàng gỡ lỗi để bạn có thể tập trung vào thành phần kiểm tra đơn vị của mình mà không phát điên vì mã liên quan.

Tôi không bao gồm các bài kiểm tra đơn vị trong bài viết này, nhưng có lẽ tôi sẽ viết một trong tương lai liên quan đến điều đó, có lẽ sử dụng điều này làm ví dụ.

Thành phần thuật toán

Với tất cả các điểm cuối của chúng tôi được thiết lập, chúng tôi có thể tiếp tục viết mã thực tế!

Hãy nhớ rằng các thuật toán có xu hướng có rất nhiều điều xảy ra với chúng, và thay vì giữ tất cả mã đó trong một không gian, tốt nhất là cách ngăn nó thành các chức năng trợ giúp khác nhau mà chúng ta có thể gọi khi cần thiết.

Tôi chỉ sử dụng hai người trợ giúp trong ví dụ này do mức độ phức tạp thấp, nhưng nó vẫn có tổ chức và có thể đọc được nhiều hơn để sử dụng chúng trong mọi trường hợp.

Chiếm các chuỗi không hợp lệ

Ba điểm cuối đầu tiên tất cả đều xử lý cách xử lý các chuỗi chúng ta nhận được như là đối số [nếu chúng thậm chí là chuỗi, nghĩa là].

Đây là điều đầu tiên chúng tôi muốn thuật toán của chúng tôi thấy - nếu chúng tôi có một cuộc tranh luận rằng mà không hoạt động, chúng tôi thậm chí không nên bắt đầu xử lý nó. Thay vào đó, chúng ta nên chấm dứt chức năng sớm. Trong trường hợp của chúng tôi, điều đó có nghĩa là ném trả lại có giá trị là một thông báo lỗi.

Đầu tiên, chúng tôi sẽ lưu các thông báo lỗi dưới dạng biến.

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."

Sau đó, chúng tôi xây dựng phương pháp trợ giúp đầu tiên của chúng tôi,

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
7. Trước tiên, nó sẽ đánh giá xem đối số có được nhận thông qua toán tử
function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
6 hay không.

Hãy nhớ rằng, toán tử này sẽ đánh giá loại dữ liệu của một cái gì đó ngay sau nó và giá trị trả về của đánh giá này là chuỗi chữ thường [nghĩa là nếu kiểu dữ liệu là một số, nó sẽ trả về số Số, một chuỗi sẽ trả về chuỗi chuỗi]] .

Nếu đối số không phải là một chuỗi, chúng tôi trả về thông báo lỗi phản ánh điều đó.

if[typeof string!== "string"]{return notAStringMessage}

Nếu đối số là một chuỗi, bây giờ chúng ta có thể xác định chất lượng của các chuỗi đó.

Đầu tiên, chúng tôi sẽ kiểm tra xem chuỗi có thực sự được điền bằng cách đánh giá độ dài của nó không. Một chuỗi trống có độ dài bằng 0 và nếu điều này đúng, chúng ta nên trả về thông báo lỗi thích hợp.

if [string.length === 0]{return zeroLengthStringMessage}

Nếu chuỗi không trống, chúng ta có thể chuyển sang đánh giá cuối cùng của mình, sử dụng một regex đơn giản để kiểm tra xem các phần tử chữ cái có trong chuỗi hay không.

Regex được sử dụng là

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
9, một lớp ký tự có thể được sử dụng để kiểm tra một chuỗi cho tất cả các chữ cái trong bảng chữ cái, bất kể trường hợp của chúng.

.

Nếu chuỗi không chứa chữ cái, thì rõ ràng không có điểm nào trong việc kiểm tra nó cho các nguyên âm và chúng ta nên trả lại thông báo lỗi cho người dùng phản ánh điều đó.

if[/[a-zA-Z]/.test[string] === false]{return noLetterString}

Nếu tất cả các điều kiện trên đã trả về sai, điều đó có nghĩa là chúng tôi có một chuỗi hợp lệ! Chúng ta có thể trả lại

Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

1 là dòng cuối cùng của mã này mã và đóng nó.

Kiểm tra một chuỗi cho nguyên âm

Bây giờ chúng tôi đã xác định được rằng đầu vào là một chuỗi hợp lệ, chúng ta có thể xem liệu nó có nguyên âm hay không. Điều này kêu gọi chức năng trợ giúp thứ hai của chúng tôi, được đặt tên một cách khéo léo

Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

2.

Điều đầu tiên chúng tôi làm là làm mọi thứ thường xuyên. Điều này là để tôi có thể so sánh một regex để xem từ này có nguyên âm không.

.

Phương thức

Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

4 sẽ so sánh một chuỗi với regex và trả về boolean nếu chuỗi đó chứa regex. Lớp ký tự tôi sử dụng tìm kiếm bất kỳ nguyên âm nào trong chuỗi mà nó so sánh, và do đó sẽ trả về
Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

1 hoặc
Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

6 dựa trên đó.

Điều này được sử dụng trong

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
5 để tiết kiệm thời gian xử lý-theo các quy tắc được thiết lập trong hàm trước, một chuỗi như
Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

8 là hợp lệ, nhưng không cần phải trải qua quá trình cắt nguyên âm nếu không có nguyên âm để cắt ở vị trí đầu tiên !!

Do đó, khi hàm này được gọi trên chuỗi,

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
5 nhận được một đối số và trả về sai, chúng tôi chỉ cần trả lại chuỗi gốc. Chỉ khi nó đúng, chúng ta mới thực sự bắt đầu thao tác chuỗi.

Cắt các nguyên âm

Tại thời điểm này, chúng tôi đã xác định rằng đối số

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
5 đã nhận được một chuỗi hợp lệ và một chuỗi có nguyên âm ở đó. Cuối cùng chúng ta có thể bắt đầu quá trình cắt nguyên âm!

let characterArray = string.split[""]
return characterArray.map[character => {
if[/[aeiouyAEIOUY]/.test[character]]{
character = ""
} else {return character}
}].join[""]

Cách dễ nhất tôi tìm thấy để làm điều này là chia chuỗi thành các ký tự riêng lẻ thông qua phương thức

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
1, với một chuỗi trống làm dấu phân cách. Điều này có nghĩa là mọi ký tự trong chuỗi được chuyển đổi thành phần tử của chính nó trong một mảng mới. Ví dụ: "Vâng Hi!" Trở thành [Viking W ,, E ,,

Vì chúng tôi có một mảng, bây giờ chúng tôi có thể lặp lại thông qua nó. Hàm lặp mà tôi chọn sử dụng là

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
2, bởi vì nó tạo ra một mảng mới. Chúng tôi sẽ chuyển đổi mảng mới này trở lại một chuỗi một chút.

Hàm gọi lại mà tôi đã cung cấp cho

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
2 kiểm tra xem ký tự đó có phải là nguyên âm không, và nếu có, thay thế nguyên âm đó bằng một chuỗi trống. Nếu nhân vật không phải là một nguyên âm, chúng ta chỉ trả lại nhân vật.

Khi bản đồ kết thúc, chúng tôi nhận được một mảng mới không nên chứa bất kỳ nguyên âm nào. Từ đó, chúng ta có thể chuyển đổi nó thành một chuỗi với

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
4, sử dụng một không gian làm dấu phân cách để giữ các từ mới được chuyển đổi được phân tách.

Hoàn thành thuật toán bỏ qua

Trước khi chúng tôi kết thúc điều này, hãy để xem nhanh về bố cục cuối cùng của thuật toán này.

Bằng cách tham khảo mã ở trên, chúng tôi có thể xem xét ngắn gọn cách thuật toán này xử lý dữ liệu và thứ tự của quá trình này.

  1. Kiểm tra xem chuỗi có hợp lệ không, chức năng kết thúc sớm bằng cách trả về thông báo lỗi thích hợp.
  2. Kiểm tra các chuỗi hợp lệ cho nguyên âm. Nếu không có nguyên âm tồn tại, chức năng kết thúc sớm bằng cách trả về cùng một chuỗi được cung cấp.
  3. Nếu một chuỗi có nguyên âm, hãy trả lại một chuỗi trống nếu chuỗi là một ký tự. Đối với các chuỗi có chiều dài khác, hãy cắt các nguyên âm ra một cách có hệ thống. Trả về chuỗi bị thay đổi.

Và đó là điều đó! Chúng tôi đã tạo một chức năng loại bỏ các nguyên âm khỏi bất kỳ chuỗi nào chúng tôi cho là hợp lệ.

Nếu bạn muốn dừng lại ở đây, thì điều đó thật tuyệt. Nếu bạn muốn xem làm thế nào để sửa đổi thuật toán này để làm cho nó phức tạp hơn một chút, vui lòng tiếp tục đọc bên dưới!

Tùy chọn: Kế toán cho Y như một nguyên âm

Lưu ý: Vui lòng tham khảo tệp

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
5 nếu bạn sử dụng repo GitHub để theo dõi. Rõ ràng có các chức năng mới được sáng tác, nhưng cũng nhận thức được sự thay đổi đối với các chức năng được thiết lập.

Một cách để làm cho thuật toán này phức tạp hơn một chút là giải thích cho bản chất nghịch lý của Y. trong tiếng Anh, y là cần thiết để hoạt động như một nguyên âm và một phụ âm.

Nhận dạng và xây dựng chức năng xung quanh các ràng buộc

Các quy tắc cho khi y là nguyên âm hoặc không thể hiểu được ngay từ cái nhìn đầu tiên:

Được lấy từ Merriam-Webster, chúng ta có thể thấy các tiêu chí cho y như một nguyên âm phụ thuộc vào số lượng nguyên âm khác trong từ, cũng như vị trí của Y lề trong từ đó.

Vấn đề với các quy tắc này từ khía cạnh lập trình là các âm tiết không phải là một điều dễ dàng được xác định. Bạn có thể làm một cái gì đó như chia một từ thành một phần ba hoặc thứ tư và mong muốn có được các âm tiết thực tế mỗi lần.

Có khả năng sử dụng API để nhận dạng âm tiết, nhưng điều đó vượt xa phạm vi của những gì chúng tôi đang cố gắng làm ở đây.

Ngay cả khi chúng tôi có điều đó, chúng tôi đã phải tính đến thực tế là thuật toán này hiện đang có các chuỗi có thể hoặc không chứa các từ thực tế. Để giải thích cho điều đó, chúng tôi có lẽ phải sử dụng một số loại API từ điển. Bạn thấy tôi đi đâu với điều này?

Vì vậy, hãy để cố gắng và coi thường các tiêu chí âm tiết khi nói đến y như một nguyên âm. Logic mà chúng tôi còn lại về cơ bản là thế này: Hồi Y là một nguyên âm khi nó là nguyên âm duy nhất trong một từ, hoặc ở cuối một từ.

Hãy để Lôi cũng tính y là nguyên âm khi nó là thứ duy nhất có mặt trong một chuỗi để làm cho cuộc sống của chúng ta dễ dàng.

Điều đó dễ dàng hơn rất nhiều để làm việc với bây giờ! Hãy cùng làm cho một chức năng mới,

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
6 theo logic này.

Tạo một hàm để nhận ra y như một nguyên âm

Điều đầu tiên chúng tôi sẽ làm là viết thường chuỗi để dễ dàng kiểm tra nó. Sau đó, chúng ta sẽ kiểm tra xem chỉ số cuối cùng của chuỗi kết thúc bằng Y. Nếu có, y là một nguyên âm, vì vậy chúng tôi sẽ trả về

Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

1. Sử dụng phương thức
const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
8 ở đây để kiểm tra chuỗi cũng chiếm chuỗi cho chuỗi chỉ đơn giản là Y.

Nếu chuỗi không kết thúc trong y, thì vẫn còn một cơ hội y có thể là một nguyên âm nếu nó là nguyên âm duy nhất trong chuỗi. Chúng ta có thể sử dụng một lớp ký tự chiếm tất cả các nguyên âm như chúng ta đã làm trước đây, nhưng lần này, chúng ta sẽ sử dụng nó cho các mục đích loại trừ.

Có nhiều cách khác nhau để đi về điều này, nhưng tôi sẽ gắn bó với phương pháp kiểm tra vì nó đã được thảo luận trước đó. Chúng tôi chỉ sử dụng một tiếng nổ

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
9 để bất cứ khi nào chúng tôi không gặp phải nguyên âm, chúng tôi sẽ được trả lại
Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

1.

Phần thứ hai của điều kiện này là rõ ràng. Nếu chúng tôi đã xác nhận rằng không có nguyên âm nào khác, y phải có mặt trong từ để được tính là một nguyên âm. Chúng ta có thể sử dụng phương pháp bao gồm để biết nếu nó có mặt.

Kế toán để chấm dứt các ký tự đặc biệt

Bây giờ, chúng tôi đã tính đến Y như một nguyên âm, bạn đã nghĩ rằng chúng tôi có thể tiếp tục và thay đổi các chức năng khác của chúng tôi để kết hợp chức năng mới này. Điều đó đúng, và nó ban đầu những gì tôi đã làm trước.

Tuy nhiên, khi vặn vẹo với thuật toán này, tôi nhận ra điều gì đó.

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
6 trông cụ thể cho ký tự ở cuối chuỗi là một phần của logic của nó.

Điều này không nhất thiết có nghĩa là nhân vật cuối cùng là một lá thư. Ví dụ, trong từ "hạnh phúc!" Điểm nhấn dấu là ký tự cuối cùng của chuỗi đó.

Với cách

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
6 hiện đang chạy, nó sẽ không loại bỏ thiết bị đầu cuối y khỏi các chuỗi có bất kỳ dấu câu, ký tự đặc biệt hoặc số nào ở cuối.

Nhập chức năng

if[typeof string!== "string"]{return notAStringMessage}
3. Điều này thực hiện chính xác những gì nó nói trên hộp thiếc, nó sẽ đưa ra một đối số của một chuỗi và trả về nó mà không có bất kỳ dấu câu kết thúc nào.

Bạn sẽ thấy những gì trông giống như một Regex phức tạp trong chức năng này. Nó thực sự không tệ khi bạn nhận ra nó là một lớp nhân vật giống như bất cứ điều gì khác.

Biểu thức chính quy có một số ký tự đặc biệt yêu cầu ký hiệu thoát khi được coi là một nhân vật thực tế, do đó số lượng lớn các dấu gạch chéo ngược.

Đối với khả năng đọc, Regex này có thể được thay đổi trong tương lai [nhìn vào các lớp nhân vật và các ký tự đặc biệt, đặc biệt là

if[typeof string!== "string"]{return notAStringMessage}
4], nhưng tất cả những gì bạn thực sự cần phải lấy đi từ đó Kết thúc một chuỗi.

Chúng tôi sẽ sử dụng Regex này để so sánh nó với ký tự cuối cùng của chuỗi

if[typeof string!== "string"]{return notAStringMessage}
3 sẽ lấy làm đối số.

Mỗi khi nó chạy vào một trong các ký tự trong Regex, chúng tôi sẽ rút ngắn độ dài chuỗi của chuỗi bằng 1 bằng cách sử dụng thao tác phụ và sự điều chỉnh lại biến đổi.

Chúng tôi sẽ tận dụng việc đệ quy ở đây để hoạt động này lặp lại cho đến khi không còn ký tự không mong muốn nào ở cuối chuỗi.

Sửa đổi các chức năng trợ giúp được thiết lập

Bây giờ, chúng ta có thể quay lại và kết hợp chức năng này vào

const notAStringMessage = "Not a string. Please provide an argument that is a string."const noLetterString = "Please write a string that has letters in it."const zeroLengthStringMessage = "Please write a string 1 or more characters long."
6.

Tất cả những gì khác nhau ở đây là chúng tôi đã cắt bỏ tất cả các ký tự không phải là ký tự không có từ chuỗi. Với sự chăm sóc đó, tất cả những gì còn lại đang sửa đổi mã đã được thiết lập của chúng tôi.

Thay đổi các chiếc Hasvowels để tính toán cho y

Hàm kiểm tra xem một chuỗi có nguyên âm cần một số điều chỉnh nhỏ bây giờ mà y không được phép trở thành một carte blanche nguyên âm.

Đầu tiên, chúng tôi chỉ cần loại bỏ Y khỏi lớp ký tự Regex. Điều này vẫn thực sự hữu ích cho chúng tôi bởi vì chúng tôi chiếm tất cả các nguyên âm khác trước khi chúng tôi phải nghĩ về Y.

Tuy nhiên, sẽ có một số điểm mà không có nguyên âm nào khác và y là ứng cử viên duy nhất. Đây là nơi chúng tôi thêm một điều kiện

if[typeof string!== "string"]{return notAStringMessage}
7, kiểm tra xem chuỗi có y trong đó không và nếu y là một nguyên âm trong chuỗi đó.

Nếu điều này là sai, chúng ta có thể khẳng định rằng chuỗi không có nguyên âm trong đó. Sau đó, chúng ta có thể sử dụng

Hello World!

  var span = document.getElementById['mySpan'];
  span.innerHTML = removeVowels[span.innerHTML];

2 giống như chúng ta đã làm trước đây.

Thay đổi nguyên âm

Điều cuối cùng chúng ta cần làm là thay đổi

function removeVowels[str] {
  return str.replace[/[aeiou]/gi, ''];
}
5 để tính đến chức năng mới mà chúng tôi đã giới thiệu. Phần đầu tiên của mã này [xác định các chuỗi hợp lệ] hoàn toàn giống nhau, vì vậy hãy để Lôi nhảy vào công cụ mới.

Loại bỏ y như một nguyên âm

Lần này, thay vì chia chuỗi thành các ký tự riêng lẻ, chúng tôi thay vào đó sẽ chia thành các từ.

Điều này là do Y không còn dễ dàng để xác định là một nguyên âm. Trước đây, bất cứ khi nào chúng tôi nhìn thấy nó, chúng tôi đã cắt nó ra. Bây giờ, chúng ta có logic nơi y có thể hoặc không phải là một nguyên âm trong bối cảnh của từ mà nó nằm trong.

Bây giờ, chúng tôi kiểm tra xem mỗi từ có y trong đó thông qua regex không. Nếu nó không có, chúng tôi không thể sửa đổi từ này theo bất kỳ cách nào. Nếu có, thì chúng tôi kiểm tra xem y có phải là nguyên âm trong từ đó không. Nếu có, chúng tôi sử dụng hàm thay thế.

Hàm này kiểm tra một regex cụ thể [đối số đầu tiên] và thay thế nó bằng một chuỗi [thứ hai]. Trong trường hợp của chúng tôi, điều đó có nghĩa là chúng tôi tìm kiếm y và thay thế nó bằng một chuỗi trống. Sau khi xong, chúng tôi tham gia vào chuỗi sao lưu.

Loại bỏ tất cả các nguyên âm khác

Bây giờ chúng ta có một chuỗi có tất cả các nguyên âm-y đã bị loại bỏ. Do đó, bất kỳ y nào khác trong chuỗi phải không phải là nguyên âm.

Bây giờ, chúng ta có thể làm chính xác những gì chúng ta đã làm trước đây: chia chuỗi thành các ký tự riêng lẻ và xóa bất kỳ ký tự nào là nguyên âm.

Cải thiện chức năng hoàn thành

Nếu bạn đã đến thời điểm này, bạn đã thấy quá trình sửa đổi thuật toán sẽ diễn ra như thế nào.

Chúng tôi vẫn xem xét các điểm cuối với từng phần chức năng mới, và trong khi thực hiện các phương pháp hoàn toàn mới vẫn hơi khó khăn, việc kết hợp chúng vào mã đã được thiết lập là rất tệ.

Bài viết này rất kỹ lưỡng, và với repo GitHub, bạn không có vấn đề gì khi thấy mọi thứ được thiết lập như thế nào.

Bạn có thể tự do chơi với nó tuy nhiên bạn muốn - ở đó chắc chắn luôn luôn có những thứ có thể được cải thiện để tối ưu hóa hiệu quả, khả năng đọc và chức năng của nó.

Làm như vậy sẽ không nghi ngờ gì nữa là một cách tuyệt vời để thực hiện tư duy phân tích và khả năng JavaScript của bạn.

Như mọi khi, hãy vui vẻ, và mã hóa hạnh phúc!

Làm thế nào để bạn loại bỏ tất cả các nguyên âm khỏi một chuỗi?

Thuật toán như sau ;..

Thuật toán. Bắt đầu Bước-1: Nhập chuỗi Bước-3: Kiểm tra sự hiện diện của nguyên âm, nếu tìm thấy Trả về True Bước-4: Sao chép nó vào một mảng khác Bước-5: Tăng bộ đếm bước 6: Kết thúc in. ....

Thí dụ. ....

Output..

Làm cách nào để loại bỏ một ký tự khỏi chuỗi trong JavaScript?

Để xóa một ký tự khỏi chuỗi, hãy sử dụng Chuỗi thay thế [] và biểu thức chính quy. Sự kết hợp này được sử dụng để loại bỏ tất cả các lần xuất hiện của ký tự cụ thể, không giống như hàm trước. Một biểu thức thông thường được sử dụng thay vì một chuỗi cùng với thuộc tính toàn cầu.use string replace[] and regular expression. This combination is used to remove all occurrences of the particular character, unlike the previous function. A regular expression is used instead of a string along with global property.

Làm thế nào để bạn loại bỏ các nguyên âm liên tiếp trong java?

Cách tiếp cận: Lặp lại chuỗi bằng cách sử dụng một vòng lặp và kiểm tra độ lặp lại của nguyên âm trong một câu nhất định và trong trường hợp nếu tìm thấy các nguyên âm liên tiếp được tìm thấy sau đó xóa nguyên âm cho đến khi tiếp theo tiếp theo và in chuỗi cập nhật.

Làm thế nào để bạn phân tách các nguyên âm và phụ âm trong một chuỗi trong JavaScript?

Tách biệt các nguyên âm và phụ âm từ một chuỗi trong câu trả lời mã JavaScript..

const str = "con cáo nâu nhanh nhảy qua một con chó lười biếng" ;.

nguyên âm const = str. khớp [/[aeiou]/gi] ;.

const phụ âm = str. khớp [/[^aeiou]/gi] ;.

Bài Viết Liên Quan

Chủ Đề